사용자를 위한 콘텐츠 렌더링

이전 모듈에서는 Snyk App을 등록하고 권한 부여 흐름을 설정하며 앱 내에서 사용자 권한을 처리하는 방법을 다루었습니다. 이러한 주제들은 모두 모든 Snyk App의 기능에 대하여 중요하지만, 그것들은 모두 '보이지 않는' 주제라고 할 수 있습니다.

이번 모듈에서는 사용자에게 콘텐츠를 표시하는 데 초점을 맞춥니다. 특히, 권한이 부여된 사용자에게는 Snyk에서 가져온 프로젝트 목록을 표시하고, 권한이 부여되지 않은 사용자에게는 권한 부여를 할 수 있는 큰 버튼을 보여주고자 합니다.

Snyk App에 템플릿 엔진 추가

Express는 화면에 내용을 출력하고 HTML 서버 측에서 렌더링할 수 있지만, 템플릿 엔진을 사용하면 더욱 쉽게 작업할 수 있습니다. 이 튜토리얼에서는 EJS를 사용합니다.

먼저, 이 튜토리얼의 이 부분에서 필요한 노드 패키지를 설치하세요:

npm install --save ejs

다음으로, 이전 모듈에서 생성한initGlobalMiddlewares() 함수를 수정하여 express에게 EJS와 같은 _뷰 엔진_을 사용하고 뷰 템플릿을 저장할 위치를 알려줍니다. 우리는 EJS 템플릿을 ./src/views에 저장하고 이미지 및 CSS와 같은 일반적인 파일은 ./src/public에 저장할 것입니다.

먼저 새 디렉토리를 생성하세요.

mkdir -p ./src/views/partials
mkdir -p ./src/public

이제 ./src/app.ts를 업데이트할 수 있습니다:

// ./src/app.ts
...

class App {

  ...

  private initGlobalMiddlewares() {

    ...

    this.app.set("views", path.join(__dirname, "/views"));
    this.app.set("view engine", "ejs");
    this.app.use('/public', express.static(path.join(__dirname, '/public')));

    ...

  }

  ...

}

각 루트에 대해 템플릿을 제공할 때 해당 컨트롤러를 수정하고 res.render("<템플릿 이름>")을 사용하여 res.send()와 같이 더 간단한 것 대신에 사용하도록 해야 합니다.

예시:

이게 전부입니다.

EJS 템플릿은 부분 포함 개념을 지원합니다. 엄격하게 필요한 것은 아니지만, 루트 템플릿과는 구분을 위해 헤더 및 푸터와 같은 부분 템플릿을 저장할 ./src/views에 하위 디렉토리를 추가하는 것이 좋습니다. 이 튜토리얼에서는 ./src/views/partials를 사용하여 이러한 템플릿을 저장할 것입니다.

기본 EJS 템플릿

첫 번째로 생성할 템플릿은 부분 템플릿이며, 다른 템플릿에 포함될 것입니다. <head>에 속하는 스타일시트 및 기타 정보들을 링크하는 곳인 header.ejs입니다.

index.ejs 템플릿은 기본 / 루트를 다룰 것입니다.

callback.ejs는 성공적인 사용자 권한 부여에 대해 렌더링됩니다.

위의 템플릿들을 사용하여 새로운 루트를 만드는 경우 스스로 템플릿을 추가하기 시작하는 데 충분합니다. EJS를 계속 사용한다면 제공되는 기능에 대한 정보는 문서를 참조하세요.

Snyk 앱에 대한 콘텐츠를 렌더링하는 것은 당신이 원하는 만큼 간단하거나 복잡할 수 있습니다. JavaScript를 다루고 있기 때문에 선택사항이 매우 유연합니다!

사용자에게 프로젝트 목록 표시

기본 템플릿이 구성되었으므로, 사용자의 Snyk 데이터를 사용하여 Snyk 앱에 기능을 추가하는 방법을 살펴보겠습니다. 이 튜토리얼에서는 사용자가 Snyk 앱 내에서 Snyk의 모든 프로젝트를 볼 수 있도록 앱을 설정했습니다.

이것은 기본적이고 쉽게 확장 가능한 기능입니다.

우리는 다음을 만들어야 합니다:

  • 새로운 루트 컨트롤러

  • 프로젝트 데이터를 가져오는 기능(또는 기능들)

  • 프로젝트를 표시하는 EJS 템플릿

API 작업을 시작합니다. 이전 모듈에서 생성한 callSnykApi() 함수를 사용하여 진행합니다. 이것은 특정 루트와 직접 관련이 있기 때문에 해당 컨트롤러와 함께 이 파일을 저장할 것입니다. 이 튜토리얼 모듈 전체에서 사용한 패턴을 따라, 이 파일들을 모두 ./src/routes/projects/에 생성합니다.

다음으로 루트 컨트롤러를 작성합니다. 패턴을 따라, ./src/routes/projects/projectsController.ts를 만듭니다.

새로운 루트 컨트롤러를 추가할 때마다 ./index.ts를 업데이트해야 합니다.

요약

이 모듈에서 생성한 프로젝트 API 핸들러 및 컨트롤러를 사용하여 자체 사용자 지정 코드를 작성하고 Snyk App을 원하는 대로 작동하도록 만드는 데 필요한 모든 것을 가졌어야 합니다.

우리는 v1 API를 사용했지만 Snyk의 REST API를 주시하십시오. 추가 기능이 추가될 때, Snyk 앱에서 사용할 새로운 또는 효율적인 엔드포인트를 찾을 수 있습니다.

Last updated