nodejs rest api > 앱개발

앱개발

nodejs rest api 정보

nodejs rest api

본문

http://www.tutorials.kode-blog.com/nodejs-rest-api

 

Introduction

REST API는 어디에나 있습니다. 여러 시스템이 데이터를 쉽게 공유 할 수 있습니다. REST는 Representational State Transfer의 약자입니다. REST는 HTTP 프로토콜을 사용하는 표준 웹 아키텍처입니다.

 

이 튜토리얼에서는 백엔드에서 MySQL 데이터베이스를 사용하는 RESTful Node.JS API를 작성하는 방법을 학습한다. API는 CRUD (데이터 작성, 읽기, 업데이트 및 삭제) 기능을 제공합니다.

 

c069f99ac9c5ee357ca1c579068c23c9_1483158369_3267.jpg 

Topics to be covered

이 자습서에서는 다음 주제를 다룹니다.

 Tutorial Pre-requisites

  • RESTful API URLs
  • Modules required for our RESTful API
    • Restify
    • Restify Validator
    • Sequelize ORM
    • Sequelize CLI
    • MySQL
  • REST Client (Advanced Rest Client Google Chrome Extension)
  • Node.JS REST API CRUD example
    • Installing required modules using npm
    • Sequelize database migrations and seeds
    • Coding the server app

Tutorial Pre-requisites

이 자습서를 완료하려면 다음 사항을 알아야합니다.

  • 이미 Node.JS의 최신 버전을 설치했습니다. 아직 수행하지 않았다면 Node.JS를 다운로드하고 설치하는 방법을 안내하는 Node.JS를 설치하고 구성하는 방법에 대한 자습서를 읽으십시오.
  • MySQL 서버가 설치되어 있고 실행 중입니다.
  • 명령 줄 / 터미널 - Node.JS는 명령 줄을 많이 사용합니다.
  • 활성 인터넷 연결 - 우리는 인터넷에서 패키지를 다운로드해야합니다.
  • 텍스트 편집기 / IDE - 코드를 작성해야합니다.
  • 자바 스크립트 기본 기술 -이 자습서를 성공적으로 완료하려면 자바 스크립트 닌자 일 필요는 없습니다. 그냥 기본
  • 나머지 클라이언트 응용 프로그램 - POST, GET, PUT 및 DELETE의 네 가지 HTTP 동사를 테스트하려면이 응용 프로그램이 필요합니다.

RESTful API URLs

RESTful API는 HTTP verb POST, GET, PUT W DELETE를 사용하여 데이터를 표시합니다. 연락처 세부 정보를 관리하는 간단한 앱을 만듭니다. API에는 다음과 같은 URL이 있습니다.

S/N
URIHTTP VERBDESCRIPTIONPARAMETERS
1/contactsGETReturns all contactsNone
2/contacts/:idGETReturns single contact filtered by idContact id
3/contactsPOSTCreates a new contactContacts table field names as string values
4/contacts/:idPUTUpdates an existing contactContact id
5/contacts/:idDELETEDeletes an existing contactContact id

API versioning

API는 다른 앱에서 사용하는 여러 시스템에 데이터를 노출합니다. 버전 관리를 통해 이전 버전과의 호환성을 제공 할 수 있습니다. 세 개의 필드를 리턴하는 API를 작성하고 하나의 필드를 h 제하고 두 개의 필드를 추가해야 한다고 가정하십시오. 이렇게하면 시스템을 사용하는 응용 프로그램이 손상될 수 있습니다.

버전 관리를 사용하는 경우 API 버전 1을 그대로두고 다음 버전 2에서 변경할 수 있습니다.

이를 위해 Google의 인증 된 API URL은 다음과 같습니다.

http://localhost:8080/api/v1/contacts

여기서..

/api/v1/은 모든 URL 앞에 api를 붙여 버전 번호를 추가합니다.

 

Modules required for our RESTful API

이제 RESTful API를 성공적으로 빌드하는 데 필요한 모듈을 살펴 보자.

  • Restify -이 모듈은 Node.JS에 REST API를 빌드하는 데 사용할 수있는 골격을 제공합니다. Restify에 대한 자세한 정보는 공식 웹 사이트 http://restify.com/에서 얻을 수 있습니다.
  • Rest Valid Validator - 필수 필드, 유효한 전자 메일 주소 등의 유효성 검사를 수행하려면이 모듈이 필요합니다
  • Sequelize ORM - Sequelize는 데이터베이스와 상호 작용할 수있는 메커니즘을 제공하는 Object Relational Mapper입니다.
  • Sequelize CLI -이 모듈을 사용하면 명령 줄을 사용하여 마이그레이션 생성, 시드 및 다른 작업 실행과 같은 작업을 수행 할 수 있습니다.
  • MySQL - 우리의 데이터베이스는 MySQL에 의해 구동됩니다.

REST Client (Advanced Rest Client Google Chrome Extension)

언제든지 원하는 REST 클라이언트를 자유롭게 사용할 수 있지만 이 자습서에서는 고급 REST 클라이언트 Google 크롬 확장을 사용합니다.

확장 프로그램을 다운로드하려면 Google 크롬 웹 브라우저에서 다음 URL을로드 할 수 있습니다.

https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo

 

Node.JS REST API CRUD example

이제 우리 손에 더러워지자. 튜토리얼 시리즈를 수행중이라면 이미 선택한 드라이브에 디렉토리 노드를 만들었습니다. 나는이 튜토리얼을 위해 같은 디렉토리를 사용할 것이다.

 

명령 프롬프트를 엽니다.

 

다음 명령을 실행하여 노드 디렉토리를 찾으십시오. 참고: Windows 운영 체제를 사용하고 있지만이 명령은 최소한의 수정으로 다른 운영 체제에서 계속 작동 할 수 있어야합니다.

cd C:\node

다음 명령을 실행하여 새 디렉토리를 만듭니다. rest

mkdir rest

방금 작성한 디렉토리에 액세스하려면 다음 명령을 실행하십시오.

cd rest

이제 npm을 사용하여 프로젝트를 초기화하십시오. 다음 명령을 실행하십시오.

npm init

유틸리티 질문에 응답하고 yes라고 말하여 package.json 파일을 만듭니다.

Installing required modules using npm

이제 필요한 모듈을 설치해 보겠습니다. 다음 명령을 실행하십시오.

npm install restify restify-validator sequelize sequelize-cli mysql -g –save

여기서..

위의 명령은 npm을 사용하여 여러 패키지를 한 번에 설치합니다. 패키지는 전역으로 설치되며 package.json에 프로젝트 종속성으로 추가됩니다.

 

Sequelize database migrations and seeders 

마이그레이션은 데이터베이스 생성 및 관리를 자동화하는 데 사용됩니다. 시더는 테스트 목적으로 더미 데이터를 만드는 데 사용됩니다.

 

MySQL에서 데이터베이스를 먼저 만들어 보겠습니다.

 

다음 SQL 명령을 실행하십시오.

CREATE SCHEMA node_rest_api;

sequelize cli를 사용하여 프로젝트를 초기화하자.

다음 명령을 실행하십시오.

sequelize init

여기서..

위의 명령은 config, migrations, models 및 seeders 디렉토리를 만듭니다. config 디렉토리에는 데이터베이스 연결 설정이있는 config.json 파일이 포함될 것이며, 모델에는 구성 파일과 모든 모델을로드 할 index.js 파일이 있습니다

/config/config.json 파일을 엽니다.

 

다음과 같이 개발 설정을 수정하십시오.


{
  "development": {
    "username": "root",
    "password": "melody",
    "database": "node_rest_api",
    "host": "127.0.0.1",
    "dialect": "mysql"
},…
 

여기서.

우리는 사용자 이름, 암호, 데이터베이스 이름, 호스트 및 방언을 사용하여 그 사용을 후속으로 설정합니다. 위의 설정이 개발 환경의 설정과 일치하는지 확인하십시오.

 

이제 연락처 테이블에 대한 모델 및 마이그레이션 파일을 만듭니다.

다음 명령을 실행하여 연락처 테이블 시드를 만듭니다.

다음 명령을 실행하십시오.

sequelize model:create --name Contact --attributes first_name:string,last_name:string,mobile_no:string,email:string

여기서.  

sequelize model : create name Contact는 테이블 연락처에 대한 모델 및 마이그레이션을 작성합니다. -attributes ...는 테이블 열과 해당 데이터 형식을 지정하는 데 사용됩니다.

모델 및 마이그레이션 디렉토리에는 이제 contact.js 및 20160630101641-create-contact.js가 각각 포함됩니다. 타임 스탬프는 시스템 날짜에 따라 달라집니다.

자동으로 데이터베이스 테이블을 만들려면 다음 명령을 실행하십시오.

sequelize db:migrate

여기서.

위의 명령은 db : 함수를 사용하여 데이터베이스 구성을로드합니다. 보류중인 모든 마이그레이션 파일을 실행하는 migrate 메서드를 호출합니다.

MySQL에서 node_rest_api 데이터베이스를 검사하면 두 개의 테이블 즉,

  • contacts - 이것은 생성 된 테이블입니다. 참고 : 모델 이름은 단수이지만 테이블 이름은 복수형입니다. 대부분의 ORM 프레임 워크에서 작업 할 때 표준 규칙입니다.
  • sequelizemeta - 이미 실행 된 마이그레이션 파일에 대한 메타 데이터가 들어 있습니다.

이제 더미 레코드를 데이터베이스에 추가합시다.

sequelize seed:create --name contacts_seeder여기서..

위의 명령은 seed 디렉토리에 seeder 파일을 만듭니다.

/seed/20160630102529-contacts_seeder.js에서 새 파일을 엽니 다.

코드를 다음과 같이 수정하십시오


'use strict';

module.exports = {
    up: function (queryInterface, Sequelize) {
        return queryInterface.bulkInsert('contacts', [
            {
                first_name: 'John',
                last_name: 'Doe',
                mobile_no: '911',
                email: '*** 개인정보보호를 위한 이메일주소 노출방지 ***'
            },
            {
                first_name: 'Jane',
                last_name: 'Doe',
                mobile_no: '912',
                email: '*** 개인정보보호를 위한 이메일주소 노출방지 ***'
            },
            {
                first_name: 'Adam',
                last_name: 'Smith',
                mobile_no: '913',
                email: '*** 개인정보보호를 위한 이메일주소 노출방지 ***'
            }
        ], {});

    },

    down: function (queryInterface, Sequelize) {
        return queryInterface.bulkDelete('contacts', null, {});
    }
};

여기서..

  • up: function (...) 메서드는 연락처 테이블에 레코드를 삽입하는 데 사용됩니다.
  • down: function (...) 메소드는 up 메소드를 사용하여 수행 된 것을 롤백하는 데 사용됩니다. 이 경우 연락처 테이블에서 모든 레코드를 삭제합니다.

더미 레코드를 데이터베이스에 추가하려면 다음 명령을 실행하십시오.

sequelize db:seed:allseed 디렉토리의 모든 파일을 실행합니다.

데이터베이스의 연락처 테이블을 확인하십시오. 다음과 같은 기록을 얻을 수 있습니다.

Coding the server app모델을로드하는 파일을 수정하여 올바른 경로를로드 해 봅시다.

/models/index.js 열기

다음 줄을 찾습니다.

var config = require(__dirname + '/..\config\config.json')[env];

다음과 같이 수정하십시오.

 var config = require('../config/config.json')[env];루트 디렉토리에 app.js 파일을 새로 만듭니다.

 app.js 파일의 코드 구조는 다음과 같습니다.

 
var restify = require('restify');
var restifyValidator = require('restify-validator');
var util = require('util');

var models = require('./models/index');

var error_messages = null;

function getAllContacts(request,response,next){...}
function getContact(request,response,next){...}
function verifyRequiredParams(request){...}
function addContact(request,response,next){...}
function updateContact(request,response,next){...}
function deleteContact(request,response,next){...}

var server = restify.createServer();

server.use(restify.bodyParser());
server.use(restify.queryParser());
server.use(restifyValidator);

server.get('/api/v1/contacts',getAllContacts);
server.get('/api/v1/contacts/:id',getContact);
server.post('/api/v1/contacts',addContact);
server.put('/api/v1/contacts/:id',updateContact);
server.del('/api/v1/contacts/:id',deleteContact);

server.listen(3000, function() {
    console.log('REST API Server listening at http://localhost:3000');
});

Spinning the API우리의 API를 회전 시키자.

REST 클라이언트 응용 프로그램을 엽니 다.

다음 URL로드

http://localhost:3000/api/v1/contacts
다음과 같은 응답을 받게됩니다.

이제 API를 사용하여 새 레코드를 추가하겠습니다.

HTTP Verb를 POST로 변경하고 매개 변수를 제출하지 않고 요청을 보냅니다.

422 응답 코드로 위의 JSON 응답을 받게됩니다.

다른 API 호출을 만들고 필요한 모든 매개 변수를 제출하십시오.

다음과 비슷한 응답을 받게됩니다.

Summary이 튜토리얼에서는 데이터베이스에서 레코드를 작성, 읽기, 업데이트 및 삭제할 수있는 간단하면서도 강력한 NodeJS REST API를 작성했다. 우리는 Sequelize ORM으로 어떻게 작업 할 수 있는지 살펴 보았습니다.
What’s next?이 자습서가 유용하다고 판단되면 소셜 미디어 버튼을 사용하여 자습서를 좋아하고 공유하십시오. 유용하지 않다면 아래의 설명 섹션을 사용하여 다음에 더 잘 할 수있는 방법을 알려주십시오.

Facebook 팬 페이지와 같은 뉴스 레터를 구독하거나 새로운 자습서를 게시 할 때 Twitter에서 우리를 따라 무료 업데이트를 받으십시오.

Tutorial History자습서 버전 1 : 게시일 2016-08-02 

 

 

공감
1

댓글 2개

마지막에 Docker하느라 직접 테스트를 못했습니다. 내년에는 시간되면 다시 한번 도전해 볼려고 마지막 글로 적었습니다.
전체 756 |RSS
앱개발 내용 검색

회원로그인

진행중 포인트경매

  1. 참여2 회 시작24.04.25 20:23 종료24.05.02 20:23
  2. 참여92 회 시작24.04.19 15:40 종료24.04.26 15:40
(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT