설치
npm install express
출력
기존에 http를 이용하여 웹페이지에 Hello Node.js를 보여주는 코드입니다.
let http = require('http');
function onRequest(request,response){
response.writeHead(200,{'Content-Type':'text/html'});
response.write('Hello Node.js');
response.end();
}
http.createServer(onRequest).listen(8888);
이번에는 express를 적용하여 출력해보겠습니다. 3000번포트로 접속을 해보면
const express = require('express')
const app = express()
// GET + "http://localhost:3000"
app.get('/', function (req, res) {
res.send('Hello World')
})
app.listen(3000)
Hello World를 출력해줍니다.
그럼 /test 경로로 다른 get을 출력할려면 어떻게 해야할까요?
위의 코드에서 get함수를 하나 더 만들어주는데 첫번째 매개변수에 경로를 설정해줍니다.
const express = require('express')
const app = express()
// GET + "http://localhost:3000"
app.get('/', function (req, res) {
res.send('Hello World')
})
//API : GET + "http://localhost:3000/test"
app.get('/test',function(req,res){
res.send("TEST SUCCESS");
})
app.listen(3000)
잘 출력됩니다.
위의 url에 접속하면 어떻게 호출이 되는 걸 까요?
GET메소드로, /test라는 url이 날아오면 매개변수로 전달받은 콜백함수를 호출하는 것으로 서버에 셋팅을 해놓아서 그렇습니다. 그럼 만약 코드 제일 아래에 있는 app.listen(3000)을 맨 위로 놓으면 어떻게 될까요?
문제가 없습니다. 해당 코드는 포트넘버를 3000로 셋팅한다는 뜻만 가지고 있습니다.
현재 코드를 보면 res.send() 안에 '문자열' 즉, text형태로 이루어져있습니다.
문자열 하나만 데이터로 전달해주면 프론트가 힘들어 합니다. 따라서 프론트로 데이터를 전달할때 객체형태로 주어야 편리해집니다.(상품의 정보를 보낼때 상품이름, 상품가격, 상품설명 등등 처럼 여러 정보가 필요)
객체로전달
- json : javascript object notation
아래처럼 객체형태로 전달할 수 있습니다.
app.get('/products/1',function(req,res){
res.send({
name:'p1',
price:10000
})
})
결과값이 잘 나옵니다.
자바스크립트 객체는 json이기 때문에 json으로 변경해줘서 보내주면 더 명확해지고 속도가 조금 더 빨라집니다.(정말 조금)
app.get('/products/1',function(req,res){
res.json({
name:'p1',
price:10000
})
})
그럼 직접 객체를 정의해서 보내주는 방식 말고 객체를 받아와서 출력도 가능 할까요?
let price = {
name:"p1",
price:10000,
}
app.get('/products/1',function(req,res){
res.json(price);
})
마찬가지로 잘 출력 됩니다.
이번에는 /products/1을 했을때는 상품1의정보를 /products/2를 했을때는 상품2의정보를 .. 이렇게 출력해보겠습니다.
아래와 같이 하드코딩하면 됩니다. 하지만 상품이 1000개가 있다면 1000개를 다 만들어야 할까요?
이럴때 사용할 수 있는게 동적URL처리입니다.
const express = require('express')
const app = express()
app.listen(3000)
app.get('/products/1',function(req,res){
res.json({
num:1
});
})
app.get('/products/2',function(req,res){
res.json({
num:2
});
})
app.get('/products/3',function(req,res){
res.json({
num:3
});
})
동적url
URL에 변수를 포함해야 할 때는 변수 앞에 ":"를 붙이면 됩니다. 그리고 req.params를 사용합니다.
/products/__ 빈칸에 오는 값을 id라는 변수에 담아두라는 말입니다.
const express = require('express')
const app = express()
app.listen(3000)
app.get('/products/:id',function(req,res){
res.json({
num:req.params
});
})
req.params.id를 해보면
'백엔드 > node.js(express)' 카테고리의 다른 글
Expess Post(Postman, app.use()함수) (0) | 2023.12.11 |
---|---|
Express 구조 이해하기(express,generator) (0) | 2023.12.11 |
req.params연습(쿼리스트링, 객체, Map객체) (1) | 2023.12.07 |
node.js에 db연동 (0) | 2023.11.24 |
Node.js(HTTP, 요청과 응답 서버만들기, 모듈,라우터) (1) | 2023.11.23 |