on
[Nodejs] URI를 통해 Client에 필요한 데이터 알아내고 전달하기
[Nodejs] URI를 통해 Client에 필요한 데이터 알아내고 전달하기
이번 글에서는 URI를 통해 Client에 데이터를 전달하는 것으로, 다른 글에서 CRUD(Create, Raed, Update, Delete)를 모두 다룬 후, 간단한 Rest API server를 만들어 볼 것이다.
먼저 Nodejs의 표준적인 웹 애플리케이션 프레임워크인 express를 통해서 진행될 것이며, Postman을 통해 호출하여 값을 받아 볼 것이다. VSCode 환경에서 진행된다.
Express의 사용을 위해 터미널창에 npm install express --save과 npm init 후 끝날 때까지 Enter를 입력해준다. 그러고 나면 프로젝트 폴더인 send.js를 만들어준다.
파일 구조
그리고 역시 express를 사용하기 위해 require로 express를 불러주는데, 이 때 http등 다른 모듈은 부르지 않아도 express가 내장하고 있는 기능 덕분에 부르지 않아도 된다.
//express 모듈 호출, app에 express()담는다 const express = require('express'); const app = express();
server를 만들어 80번(http)포트에 열어준다.
//Server 만들기 const PORT = 80; const server = app.listen(PORT,()=>{ console.log(`server running localhost`); });
여기까지 하고 send.js를 실행시켜 보았을 때 콘솔창에 server running localhost라고 나온다면 앞으로도 문제가 없을 가능성이 크다. (사실상 모듈등의 설치가 멀쩡히 되었다고 뜻하기 때문에)
app.get을 통하여 get방식으로 오는(URL에 포함되어 오는) 사용자의 요청을 받아서 함수를 통해 사용자에게 값을 전달해준다.
//path에 :이 들어가면 뭐가 들어가도 되고, 이를 parameter로 받을 수 있다 app.get("/class/:about",(req,res)=>{ //parameter로 about을 받았다 let {about} = req.params; //if문을 통하여 Client가 URI로 요청한 정보에 맞는 정보를 보내준다. 보통 JSON형식이다 if(about == '1'){ const data = [ { name : 'yoonhyenwoo', birth: '2005/10/13' }, { name:'kimgaeddong', birth:'2005/12/10', }, ]; res.send(data); }else if(about == '2'){ const data = [ { name : 'parkminsu', birth: '2005/6/15' }, { name:'kimsangso', birth:'2005/9/21', }, ]; res.send(data); }else{ res.send("Not Found"); }
Path는 경로를 뜻하고, parameter로 받아서 if문을 통하여 Client가 URL로 요청한 것에 맞는 정보를 보내준다는 말은 콜론자리에 들어가는 것을 매개변수로 받아서 (/class/여기) 필요한 정보를 얻는, 그러니까 사용자가 URL을 통해서 필요한 정보를 요청해야 한다는 것이다.
*app.end와 app.send, app.json의 차이가 문득 궁금하여 찾아보았더니, app.end는 함수 미들웨어를 끝낼 때 쓰고 app.send는 파일의 형식을 알아서 찾아서 response해주고 app.json은 json형식으로 response하는데 app.send의 default값이 json형식이고 둘다 정상적으로 종료된다고 하니 그냥 app.send()를 사용하면 될 것 같다.
전체 코드
//express 모듈 호출, app에 express()담는다 const express = require('express'); const app = express(); //Server 만들기 const PORT = 80; const server = app.listen(PORT,()=>{ console.log(`server running localhost`); }); //path에 :이 들어가면 뭐가 들어가도 되고, 이를 parameter로 받을 수 있다 app.get("/class/:about",(req,res)=>{ //parameter로 about을 받았다 let {about} = req.params; //if문을 통하여 Client가 URI로 요청한 정보에 맞는 정보를 보내준다. 보통 JSON형식이다 if(about == '1'){ const data = [ { name : 'yoonhyenwoo', birth: '2005/10/13' }, { name:'kimgaeddong', birth:'2005/12/10', }, ]; res.send(data); }else if(about == '2'){ const data = [ { name : 'parkminsu', birth: '2005/6/15' }, { name:'kimsangso', birth:'2005/9/21', }, ]; res.send(data); }else{ res.send("Not Found"); } })
https://github.com/YoonHunWoo/Nodejs-Send-Data.git
from http://awlhdla.tistory.com/138 by ccl(A) rewrite - 2021-12-30 21:00:40