NestJS 및 Nrwl Nx를 이용한 API 구축 소개

5234 단어 nodenxnestapi

소개


이 강좌에서는 NestJS 및 Nx 작업공간을 사용하여 API를 구축하는 방법을 학습합니다.목표는 너에게 좋은 출발점을 주고 쉽게 확장하는 것이다.그 밖에 제가 작성하고자 하는 후속 문장과 시리즈의 참고가 될 것입니다.
이 글은 기술 창고에 대한 소개이며 이 시리즈의 강좌를 되돌아봤다.

NestJS 회사



NestJS는 API 사용 노드를 구축하는 데 사용되는 프레임워크입니다.js 및 TypeScriptNestJS는 Express(또는 선택할 수 있는 Fastify) 위에 독선적인 API를 제공하고 TypeScript 클래스와 장식기를 대량으로 사용하여 대량의 코드를 작성하지 않고 새로운 기능을 신속하게 추가할 수 있는 성명식 방식을 실현했다.
NestJS는 강력한 documentation 및 적극적인 유지 보수를 제공합니다.프로젝트 자체는 많은 유용한 라이브러리를 제공했고 끊임없이 증가하는 지역사회가 더 많은 기능을 제공했다.또한 필요한 기능이 없으면 NestJS를 쉽게 확장할 수 있습니다.

NestJS 개념


이 시리즈를 읽을 때 다음과 같은 NestJS 개념에 주의해야 합니다.

모듈


NestJS의 아키텍처는 Angular에서 영감을 얻었습니다.이것은 모듈을 사용하여 다른 모듈에서 가져올 수 있는 독립적이고 다시 사용할 수 있는 블록에 기능을 봉인합니다.모듈은 다른 구성 요소를 연결하고 주입 작업에 의존하도록 확보합니다.

컨트롤러


컨트롤러는 RESTful API 구축에 사용됩니다.그것들은 당신이 꿈꾸는 모든 HTTPapi를 구축하고 TypeScript 클래스에 방법을 추가하고 수식함으로써 깨끗하고 성명적인 방식으로 실현할 수 있습니다.이 컨트롤러들은 외부 REST API를 정의하는데, 대부분의 힘든 작업은 공급자를 통해 이루어진다.

공급업체


공급자는 컨트롤러, 해상도 또는 다른 공급자에게 주입되어 요청을 처리합니다.데이터베이스에 접근하거나 제3자 API나 라이브러리를 호출하는 것은 공급자 중에서 이루어진다.이렇게 하면 컨트롤러가 깨끗하고 집중적이며 응용 프로그램의 다른 부분과 쉽게 기능을 공유할 수 있다.

해상도


해석 프로그램은 GraphQL API 구축에 사용됩니다.코드 우선 순위를 사용하여 GraphQL API를 구축할 수 있습니다.즉, API를 정의하기 위해 GraphQL 모드 정의 언어(SDL)가 아닌 TypeScript 코드를 사용할 필요가 없습니다.디렉터와 마찬가지로 해석기는 외부 API를 정의하고 공급자를 사용하여 복잡한 작업을 수행합니다.

Nx 회사



Nxmono 저장소 구조와 CLI 도구를 결합하여 하나 이상의 응용 프로그램과 라이브러리를 개발하고 관리합니다. 이 모든 것이 같은 저장소에 있습니다.Nx는 코드 협업, 통합 테스트를 장려하고 구축 및 테스트 성능을 최적화합니다.
Nx는 중간 규모 또는 대규모 응용 프로그램을 구축하는 데 사용되는 신기한 도구입니다.monorepo를 사용하면 프로젝트의 각 부분 간에 코드를 쉽게 공유할 수 있으며, 이 부분들이 동기화되지 않을까 걱정할 필요가 없습니다.Nx는 응용 프로그램의 어떤 부분이 서로 관련되어 있는지 알고 있기 때문에 매우 똑똑하다.아래의 의존 관계도를 읽으세요.

Nx 개념


이 시리즈를 읽을 때 다음과 같은 Nx 개념에 주의해야 합니다.

작업공간


작업공간은 응용 프로그램이나 라이브러리일 수 있는 하나 이상의 항목으로 구성된 저장소의 루트에 정의됩니다.작업공간에서는 Nx CLI 또는 Angular CLI를 사용하여 프로젝트에 서비스, 테스트, 구축, lint를 제공합니다.작업공간은 파일nx.jsonworkspace.json에서 정의됩니다(Angular CLI를 사용하는 경우).

활용단어참조


Nx에서 응용 프로그램(또는 여러 응용 프로그램)은 실행 가능한 응용 프로그램을 포함하는 항목입니다.응용 프로그램은 경량급이어야 하며 라이브러리에 정의된 기능을 공개해야 한다.

도서관


라이브러리(또는 LIB)는 애플리케이션 기능을 구현하는 프로젝트입니다.이 라이브러리는 응용 프로그램과 다른 LIB에서 사용할 수 있는 외부 API를 정의합니다.

플러그인


Nx 작업공간의 실제 기능은 설치된 플러그인에 의해 정의됩니다.Nx에는 Angular, Node, Next, React 및 웹 구성 요소에 대한 지원이 추가된 공식 플러그인이 상당히 많이 포함되어 있습니다.이 밖에 커뮤니티 플러그인 목록도 계속 증가하고 있다.

종속 관계도


의존 관계도나 dep도는 자동으로 생성된 모델로 모노포의 서로 다른 부분이 어떻게 서로 의존하는지 나타낸다.Nx는 이러한 정보를 사용하여 작업공간의 일부 부분에서 지능적으로 명령을 실행합니다.예를 들어 실제 변경된 항목만 재구성하거나 의존 항목이 변경될 때.

프로젝트 구조


그러나 이 시리즈에서 우리는 간단한 구조를 사용했다.라이브러리 angular.jsonapi 를 사용하는 core 라는 애플리케이션을 다음과 같이 구축했습니다.
apps/api
libs/core
libs/course
libs/<library> (any other functionality goes here).

이 시리즈 자습서


이 시리즈는 네 개의 강좌로 구성되어 있으며, 완성되면 확장하기 쉬운 튼튼한 기초 프로젝트를 생성할 것이다.


이 프로젝트를 시작하기 위해서 우리는 빈 Nx 작업 구역을 만들고 그것이 무엇으로 구성되어 있는지 사방으로 보았다.우리는 제출할 때마다 코드를 자동으로 포맷하기 위해 도구를 설치하고 설정했다.이렇게 하면 미래의 모든 코드가 유사한 스타일을 가지고 있음을 확보할 수 있다.


프로젝트를 만든 후, 우리는 Nx의 공식 NestJS 플러그인을 사용하여api라는 프로그램을 만들었습니다. 그 중에는core라는 라이브러리가 포함되어 있습니다.핵심 라이브러리는 실행 시 설정을 내보내고api에서 사용합니다.


이 부분들이 준비된 후에, 우리는api에 실제 기능을 계속 추가할 것입니다.필요한 의존 항목을 설치하고 NestJS에 GraphQL 모듈을 설정한 후, 우리는 GraphQL 해상도를 실현하였으며, 서버의 정상적인 운행 시간을 되돌려주는 간단한 조회를 추가하였다.


이 모든 것이 완성되면 API가 발표될 수 있습니다!로컬에서 프로젝트를 구축하고 예상대로 작동하도록 확인한 후, Heroku에 배치할 설정을 추가했습니다.

감사합니다.


우선, 이 시리즈의 평론가들에게 감사 드립니다.🙏:




  • 이 시리즈의 표지 사진은 this photo unsplash에서 편집한 Todd Kent 버전이다.
    내 글을 읽어 주셔서 감사합니다. 나는 그것이 유용하길 바랍니다.언제든지 연락 주세요. 팔로우 하거나 DEV에 메시지 남겨주세요!🐝

    좋은 웹페이지 즐겨찾기