Ubuntu 16.04 LTS에서 Express.js를 사용하여 Node.js RESTful API를 만드는 방법

이 튜토리얼에서는 Ubuntu 16.04 LTS에서 Node.js 및 Express를 사용하여 HTTP 요청을 제공하고 NGINX로 리버스 프록시하는 완전한 RESTful API를 설정하는 방법을 학습합니다. 우리는 Postman 이라는 응용 프로그램을 사용할 것입니다API를 테스트하고 API가 완전히 작동하고 제대로 작동하는지 확인하기 위해 잘 알려진 API 개발 도구입니다. Node.js는 Chrome의 V8 엔진을 기반으로하는 빠른 크로스 플랫폼 JavaScript 프레임 워크입니다. 데스크탑 및 서버 응용 프로그램 모두에서 사용되며 단일 스레드 이벤트 루프 처리로 유명합니다. Node.js 용 웹 애플리케이션 프레임 워크 인 Express.js에 번들로 제공되는 RESTful API의 백엔드로 Node.js를 사용할 것입니다. Express.js는 무료 및 공개 소프트웨어로 출시됩니다. Express는 서버 측이며 JavaScript로 작성되었으며 API 빌드 용으로 설계되어 프로젝트에 적합합니다. 반면 Postman은 API 개발을 염두에두고있는 강력한 HTTP 클라이언트입니다. API 개발에 필요한 모든 도구를 갖추고 있습니다.

우편 배달부 설치

먼저 Postman의 웹 사이트로 이동 하여 서버가 아닌 기본 PC 용 Postman을 다운로드하여 설치 하려고합니다 . 모든 설치 지침은 해당 웹 사이트에 있습니다.

Node.js 설치

시작하려면 먼저 Node.js를 설치해야 API 개발을 시작할 수 있습니다. 공식 웹 사이트에서 Node.js를 다운로드하여 설치합니다.

 curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
 sudo apt-get install -y nodejs

또한 필요한 빌드 도구를 가져 와서 모듈을 컴파일하는 데 도움이됩니다.

sudo apt-get install build-essential

이 튜토리얼에서는 Node.js의 LTS 버전 8.9.3을 사용합니다.

Node.js 프로젝트 초기화

애플리케이션을 포함 할 새 Node.js 프로젝트를 초기화해야합니다. 그렇게하려면 새 디렉토리를 만드십시오.

 mkdir expressapi 

새 디렉토리로 변경하십시오. 내부에 들어가면 npm init필요한 모든 프롬프트를 실행 하고 완료하십시오. 응용 프로그램의 "입력 지점"에 유의하십시오. 나중에이 파일을 작성하게됩니다. 완료되면 package.json현재 디렉토리에 파일 이 표시됩니다 . 프로젝트에 대한 설명으로 작동하며 작동하는 데 필요한 모든 종속성을 나열합니다.

Express.js 설정

이제 Express.js를 구성하고 종속 관계를 설정합니다.

npm install express

설치 과정이 시작됩니다. 모든 것이 다운로드를 완료하는 데 몇 분이 걸립니다.

메인 파일 시작

다음으로 API의 기본 시작 파일을 만듭니다. 여기에서 package.json파일 에서 본 "입력 지점"을 사용할 수 있습니다. 이 자습서에서는 기본 명명 체계 인을 사용합니다 index.js.

touch index.js

그런 다음 나노 텍스트 편집기에서 엽니 다.

nano index.js

기본 파일에서 먼저 모든 기본 패키지를 호출하고 경로를 등록하려고합니다.

var express = require('express');        
var app = express();                 
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
var port = process.env.PORT || 8080;  
const router = express.Router();
router.get('/', function(req, res) {
    res.json({ message: 'API is Online!' });   
});

app.use('/api', router);
app.listen(port);
console.log('Listening on port ' + port);

기본적으로 우리가하는 일은 앱을 초기화하고 API에 대한 기본 라우터를 설정하는 것입니다. 애플리케이션 포트를로 설정했습니다 8080. RESTful API를 구성 할 때이 번호가 필요합니다. 이제 API를 테스트 할 준비가되었습니다.

Postman으로 API 테스트

프로젝트 디렉토리에서 다음을 실행하십시오.

node <filename>.js

그러면 <filename>파일에서 지정한 시작 파일이 있는 API가 시작 package.json됩니다. 그런 다음 PC / Mac에서 Postman을 열고 New오른쪽 상단 모서리에있는 " "버튼을 클릭 한 다음 " Request" 를 클릭하십시오 . 있을 때 GET옆에 " " 라고 표시된 막대가 표시 됩니다. 여기에 요청 URL을 입력하겠습니다. 요청 URL 섹션에 다음을 입력하고 " Send"를 클릭하십시오 .

`http://your-server-ip:3000/api` 

" 'API is online'" 가 표시됩니다 .

API 경로

경로를 처리하기 위해 Express 라우터를 사용합니다. 라우터가 무엇인지 모르는 경우 기본적으로 응용 프로그램 끝 점이 클라이언트 요청에 응답하는 방식입니다. 다음은 예제로 설정할 경로입니다.

  • /api/numbers -1-10의 모든 숫자를 표시합니다.

  • /api/letters -AZ의 모든 문자를 표시합니다.

이제 첫 번째 라우트 미들웨어 구조를 설정합니다.

router.use(function(req, res, next) {
   console.log('We've got something.');
   next() //calls next middleware in the application.
});

router.route('/numbers/:number').get((req, res) => {
     res.json({result: req.params.number + 1})
});

이 예에서는 사용자가 GET 방법을 사용하여 단어 형태를 제공하여 숫자 + 1의 합계를 요청할 수있는 상황을 설정했습니다. 우리는 그 router.route()함수를 사용하여 결과로 어떤 숫자를 다시 보내길 원하는지 가리 킵니다. 매개 변수 이름 :앞에는 " " 가 붙어 있습니다. 를 통해 이러한 매개 변수에 액세스합니다 req.params.

다음은 글자가 포함 된 예입니다.

   router.route('/letters/:letter').get((req, res) => {
     res.json({result: req.params.letter.toUpperCase()})
});

위와 동일한 방법을 사용하지만 대문자를 대문자로 보냅니다.

NGINX 소개

NGINX는 웹 서비스, 리버스 프록시, 스트리밍 등에 사용되는 잘 알려진 오픈 소스 소프트웨어입니다. 80Node.js는 루트 액세스없이 1024 미만의 포트에 대한 연결을 허용하지 않기 때문에 NGINX를 사용하여 API를 리버스 프록시로 사용하여 port 에서 실행할 수 있습니다. 도메인을 서버에 연결할 때 유용합니다.

NGINX 설정

NGINX 설치를 시작하려면 터미널에서 다음을 실행하고 설치가 완료 될 때까지 기다려야합니다.

sudo apt-get install nginx

다음으로, NGINX가 앱을 리버스 프록시하는 데 사용할 사이트 파일을 만들고자합니다.

sudo nano /etc/nginx/sites-available-api.js

다음을 사용하여 파일을 채우고 CTRL+ O를 눌러 저장하십시오.

server {
          listen 80;
          location / {
                proxy_set_header X-Real-IP 
                $remote_addr;
                proxy_set_header 
                X-Forwarded-For 
                $proxy_add_x_forwarded_for;
                proxy_set_header Host 
                $http_host;
                proxy_set_header 
                X-NginX-Proxy true; proxy_pass 
                http://127.0.0.1:8080/;
                proxy_redirect off;
                proxy_http_version 1.1;
                proxy_set_header Upgrade 
                $http_upgrade;
                proxy_set_header Connection 
                "upgrade";
                proxy_redirect off;
                proxy_set_header 
               X-Forwarded-Proto $scheme;
       }
}

이전에 애플리케이션을 실행 한 동일한 포트를 사용하여 Nginx에 모든 요청을 포트의 IP 주소에서 포트 80에서 실행되는 API 로 리디렉션하도록 지시합니다 8080.

다음으로 새로 만든 파일을 sites-available폴더 에 심볼릭 링크하여 리버스 프록시를 활성화하십시오 .

sudo ln -s /etc/nginx/sites-available/api /etc/nginx/sites-available

이를 통해 NGINX는 API를 리버스 프록시합니다.

NGINX로 첫 실행

NGINX 구성을 마치면 NGINX를 시작한 다음 API를 시작합니다. 먼��� NGINX를 다시 시작하십시오.

sudo systemctl restart nginx

그런 다음 API 디렉토리로 다시 변경하고 시작하십시오.

node <filename>.js

포트에서 애플리케이션이 실행됩니다 80. Postman으로 위의 테스트를 실행하여 모든 것이 제대로 작동하는지 확인하십시오.

API 실행 유지

프로덕션 환경���서는 백그라운드에서 영원히 실행되도록 노드 애플리케이션의 프로세스 관리자가 있는지 확인하려고합니다. 이 학습서에서는 PM2 (프로세스 관리자 2)라는 프로세스 관리자를 사용합니다. PM2 (프로세스 관리자 2)는 Node.js 애플리케이션의 프로세스 관리자로 최소한의 가동 중지 시간으로이를 영원히 유지합니다. PM2에는 중지, 다시로드, 일시 중지 등과 같은 유용한 관리 도구가 많이 있습니다. PM2를 설치하려면 다음을 입력하고 설치를 기다립니다.

sudo npm install pm2 -g

설치가 완료되면 프로젝트 디렉토리에 있는지 확인하고 다음을 입력하면 응용 프로그램이 시작됩니다.

pm2 start <filename>.js

PM2로 애플리케이션 관리

앞에서 언급했듯이 PM2에는 응용 프로그램을보다 잘 관리하는 데 사용할 수있는 유용한 도구가 있습니다.

  • pm2 stop-이름에서 알 수 있듯이 현재 실행중인 응용 프로그램을 중지하고 프로세스를 종료 할 수 있습니다. 응용 프로그램에서 예기치 않은 결과가 발생하면 중지하면 편리합니다.

  • pm2 list-목록 기능을 사용하면 PM2를 통해 현재 실행중인 모든 응용 프로그램을 이름으로 매핑 할 수 있습니다. 응용 프로그램의 가동 시간을 빠르게 확인해야하는 경우이 도구를 사용해야합니다.

  • pm2 restart-어떤 이유로 응용 프로그램이 멈추고 다시로드하려는 경우 pm2 restart가 바로 그 일을합니다. 응용 프로그램 프로세스를 종료 한 후 다른 프로세스에서 다시 시작합니다.

  • pm2 monit-PM2의 내장 모니터 도구를 사용하면 CPU / RAM 사용량과 같은 응용 프로그램의 특정 세부 정보를 사용자 친화적 인 ncurses 스타일 그래프로 볼 수 있습니다. 응용 프로그램의로드를 시각적으로 보여주고 싶을 때 유용합니다.

최종 비고

Node.js, Express를 사용하고 NGINX로 리버스 프록시를 사용하여 RESTful API 작성 태스크를 완료했습니다. 이 튜토리얼을 자유롭게 확장하십시오. 인증 방법 추가, 데이터베이스, 더 나은 라우팅 및 오류 처리 등과 같은 새로운 API로 많은 훌륭한 일을 할 수 있습니다. "A"레코드가 이미 IP 주소로 설정된 도메인이있는 경우 도메인에서 API에 액세스 할 수 있습니다. Express.js에 대한 자세한 내용을 보려면 해당 웹 사이트 ( http://expressjs.com)를 방문하십시오 . NGINX 및 리버스 프록시에 대한 자세한 내용은 http://nginx.com을 방문 하십시오 . PM2에 대한 자세한 내용을 보려면 http://pm2.keymetrics.io 페이지를 방문 하십시오 .



Leave a Comment

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

랜섬웨어 공격이 증가하고 있지만 AI가 최신 컴퓨터 바이러스를 처리하는 데 도움이 될 수 있습니까? AI가 답인가? AI boone 또는 bane인지 여기에서 읽으십시오.

ReactOS: 이것이 Windows의 미래입니까?

ReactOS: 이것이 Windows의 미래입니까?

오픈 소스이자 무료 운영 체제인 ReactOS가 최신 버전과 함께 제공됩니다. 현대 Windows 사용자의 요구 사항을 충족하고 Microsoft를 무너뜨릴 수 있습니까? 이 구식이지만 더 새로운 OS 환경에 대해 자세히 알아보겠습니다.

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

Whatsapp은 마침내 Mac 및 Windows 사용자용 데스크톱 앱을 출시했습니다. 이제 Windows 또는 Mac에서 Whatsapp에 쉽게 액세스할 수 있습니다. Windows 8 이상 및 Mac OS 10.9 이상에서 사용 가능

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

인공 지능이 소규모 회사에서 어떻게 인기를 얻고 있으며 어떻게 인공 지능이 성장할 가능성을 높이고 경쟁자가 우위를 점할 수 있는지 알아보려면 이 기사를 읽으십시오.

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

최근 Apple은 문제를 해결하기 위해 macOS Catalina 10.15.4 추가 업데이트를 출시했지만 이 업데이트로 인해 Mac 컴퓨터의 브릭킹으로 이어지는 더 많은 문제가 발생하는 것 같습니다. 자세히 알아보려면 이 기사를 읽어보세요.

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

저널링 파일 시스템이란 무엇이며 어떻게 작동합니까?

저널링 파일 시스템이란 무엇이며 어떻게 작동합니까?

우리 컴퓨터는 모든 데이터를 저널링 파일 시스템이라고 하는 체계적인 방식으로 저장합니다. 검색을 누르는 즉시 컴퓨터에서 파일을 검색하고 표시할 수 있는 효율적인 방법입니다.https://wethegeek.com/?p=94116&preview=true

기술적 특이점: 인류 문명의 먼 미래?

기술적 특이점: 인류 문명의 먼 미래?

과학이 빠른 속도로 발전하고 우리의 많은 노력을 인수함에 따라 설명할 수 없는 특이점에 처할 위험도 높아집니다. 특이점이 우리에게 무엇을 의미할 수 있는지 읽어보십시오.

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

2021년 의료 분야에서 인공 지능의 영향

2021년 의료 분야에서 인공 지능의 영향

의료 분야의 AI는 지난 수십 년 동안 큰 도약을 했습니다. 따라서 의료 분야에서 AI의 미래는 여전히 나날이 성장하고 있습니다.