Node.js

Node.js, Hapi 및 Couchbase NoSQL로 RESTful API 만들기

Express로 Node.js 애플리케이션을 개발하는 것은 매우 인기 있는 옵션이지만, 이것이 유일한 옵션은 아니며 최선의 옵션도 아닐 수 있습니다. 저는 최근에 Hapi Express가 등장했을 당시에는 존재하지 않았던 서비스를 위한 프레임워크로 정의됩니다.

이전에는 Node.js 및 Express로 RESTful API 만들기를 사용했지만 이번에는 Hapi를 사용하여 동일한 작업을 수행해 보겠습니다.

코드에 너무 많은 시간을 투자하기 전에 정확히 무엇을 구축할 것인지 파악해야 합니다. 여기서 목표는 두 개의 엔드포인트 애플리케이션을 만드는 것입니다. 하나의 엔드포인트는 데이터베이스에서 데이터를 생성할 수 있어야 하고 다른 엔드포인트는 데이터베이스에서 읽을 수 있어야 합니다.

컴퓨터 어딘가에 새 프로젝트 디렉터리를 만들고 해당 디렉터리 내의 명령 프롬프트에서 다음 명령을 실행합니다:

위의 명령은 새 Node.js 프로젝트를 생성합니다. package.json 파일을 열어야 합니다. 다음 단계는 각 프로젝트 종속 요소를 설치하는 것입니다.

명령줄에서 다음을 실행합니다:

위의 명령은 Couchbase Node.js SDK, Hapi 프레임워크, 데이터 유효성 검사를 위한 Joi, NoSQL 문서 키를 나타내는 UUID 값을 생성하기 위한 패키지를 다운로드합니다.

계속해서 app.js 파일을 만듭니다. 여기에 모든 라우팅 정보와 데이터베이스 로직이 있습니다. 이 파일을 엽니다. app.js 파일을 열고 다음 자바스크립트 코드를 포함합니다:

위의 코드로 시작할 수 있습니다. 각 프로젝트 종속성을 가져오고, 특정 호스트와 포트에 대해 Hapi를 초기화하며, Couchbase에 대한 연결을 설정합니다. 또한 루트 경로를 나타내는 단일 경로를 정의했습니다.

이 예제에서는 Couchbase를 로컬에서 실행하고 다음과 같은 버킷을 사용하겠습니다. 기본값. Couchbase 설치에 대한 자세한 내용은 다음 자습서를 확인하세요. Mac, LinuxWindows.

이제 데이터베이스와 상호 작용하는 두 개의 엔드포인트에 대해 걱정할 수 있습니다.

첫 번째이자 아마도 가장 간단한 엔드포인트는 문서 목록(이 경우 이전에 생성된 사람들)을 반환하는 것입니다:

주목하세요. 핸들러 메서드를 호출합니다. 여기서는 N1QL 쿼리를 작성하여 모든 문서에 대해 유형 일치하는 속성 사람. 즉, 쿼리에서 선택되지 않는 다른 문서 유형이 많이 있을 수 있습니다.

쿼리에 문제가 있는 경우 500 응답 코드가 포함된 오류를 반환하고, 그렇지 않은 경우 쿼리 결과를 반환합니다.

다음 엔드포인트는 데이터 유효성 검사를 위해 Joi를 사용하는 곳입니다. 다음 자바스크립트 코드를 확인하세요:

클라이언트가 이 엔드포인트에서 소비를 시도하면 Hapi의 일부로 유효성 검사가 수행됩니다. 이 유효성 검사 프로세스에서는 페이로드를 검사하고 각 속성이 기준을 충족하는지 확인합니다. 이 경우 두 가지 모두 이름 그리고 가 있어야 합니다. 다음과 같은 경우 금지됩니다. 유형 그리고 타임스탬프 속성이 요청 본문에 존재하는지 확인합니다. 존재하면 오류가 반환됩니다. 존재하지 않으면 기본값이 사용됩니다.

유효성 검사가 통과되면 고유 ID를 사용하여 Couchbase에 데이터를 삽입할 수 있습니다. 데이터는 응답에도 반환됩니다.

결론

방금 Hapi를 사용하여 매우 간단한 RESTful API를 만드는 방법과 카우치베이스 서버. 저는 처음부터 Express를 사용해 왔지만, 웹 서비스 제작에 있어서는 Hapi가 훨씬 더 잘 설계된 것 같습니다. 그러나 둘 다 작업을 완료할 수 있으며 Express의 대안을 보고 싶다면 다음을 확인하세요. 이전 튜토리얼 제가 썼어요.

Node.js와 함께 Couchbase를 사용하는 방법에 대한 자세한 내용은 카우치베이스 개발자 포털.

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 Nic Raboy, 개발자 옹호자, Couchbase

닉 라보이는 최신 웹 및 모바일 개발 기술을 옹호하는 사람입니다. 그는 Java, JavaScript, Golang 및 Angular, NativeScript, Apache Cordova와 같은 다양한 프레임워크에 대한 경험이 있습니다. Nic은 웹 및 모바일 개발을 보다 쉽게 이해할 수 있도록 자신의 개발 경험에 대해 글을 쓰고 있습니다.

댓글 하나

  1. 따라서 Hapi.js의 변경 사항으로 인해 약간 오래된 것 같으므로 최신 버전의 Hapi를 사용하는 경우 다음과 같이 코딩해야했습니다.

    const Hapi = require("hapi");
    const Couchbase = require("couchbase");
    const UUID = require("uuid");
    const Joi = require("joi");

    const server = new Hapi.Server({
    호스트: 'localhost',
    포트: 3000
    });
    const N1qlQuery = Couchbase.N1qlQuery;

    const cluster = 새로운 Couchbase.Cluster("http://localhost");
    const bucket = cluster.openBucket("default", "");

    server.route({
    메서드 "GET",
    경로: "/",
    핸들러: (요청, 응답) => {
    "Hello World"를 반환합니다;
    }
    });

    server.start(error => {
    if(error) {
    오류를 발생시킵니다;
    }
    console.log("수신 중" + server.info.uri);
    });

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.