[8기 9회차] 0915 백엔드 기초 - express와 REST API 실습
express란?
express는 Javascript로 작성되고 Node.js 런타임 환경에서 구동되는 웹 프레임워크. 다시 말해 웹 및 모바일 어플리케이션을 위한 일련의 강력한 기능을 제공하는 간결하고 유연한 Node.js 웹 어플리케이션 프레임워크다.
만약 Node.js를 사용한다고 하면 대부분의 이유가 웹 서버를 구축하기 위해서이다. 또한 Node.js로 웹 서버를 구축한다고 하면 대부분 Express를 사용할 것이다.
express 설치
npm i express
http 와 express 비교
1) http 웹 서버 구동
let http = require('http');
// 클라이언트와 소통 함수
function onRequest(request, response){
// head 적기 : 상태코드, 요청타입
response.writeHead(200, {'Content-Type' : 'text/html'});
// write body. body 적기
response.write('Hello Node.js');
// response 종료. 전송바람
response.end();
}
// 서버 생성
http.createServer(onRequest).listen(8888);
2) express 웹 서버 구동
- express 모듈을 가져오는 방식이 CommonJs 방식과 ES module 방식이 조금 다르다.
- ES module 방식을 사용하려면 package.json에 "type" : "module"을 추가해야 한다.
- express 모듈을 app 변수에 담고, app.메서드 함수에 파라메터로 경로와 콜백함수를 넘긴다.
- res.send() 함수를 이용해 데이터를 화면에 보낼 수 있다.
// CommonJs 방식
const express = require('express');
// ES module 방식. package.json에 "type": "module" 추가
// import express from 'express'
// express 호출해 app변수에 서버 담음
const app = express()
// http://localhost:3000/
// '이 주소값으로 요청이 오면'을 간단히 표현
// app.get('요청경로',콜백함수[요청,응답])
// GET + "/"
app.get('/', (req, res) => {
res.send('Hello World')
})
// 서버 셋팅. 순서 상관 없음
// 포트넘버 3000으로 설정함
app.listen(3000)
express REST API 실습/응용 - res.send()와 res.json()
1) res.send()
- json, text, html 등 모든 걸 통칭해서 전달한다.
app.get('/test', (req, res) => {
res.send('TEST SUCCESS')
})
app.get('/test/1', (req, res) => {
res.send('One!!')
})
2) res.json()
- json 객체를 전달한다.
app.get('/hello', (req, res) => {
res.json({
say: '안녕하세요'
})
})
app.get('/bye', (req, res) => {
res.json({
say: '안녕히 가세요'
})
})
// GET 메소드로, '/nicetomeetyou' 날라오면
// 매개변수로 전달받은 콜백함수를 호출 => 서버에 셋팅
app.get('/nicetomeetyou', (req, res) => {
res.json({
say: '만나서 반갑습니다'
})
})
**객체란?
현실 세계의 사물이나 개념을 추상화하여 프로그래밍 등에서 다루는 단위로, 특정 속성(데이터)과 행위(기능)를 함께 묶어 놓은 것
ex."Node.js를 공부해보자"라는 책의 데이터 덩어리
- 상품명 : Node.js를 공부해보자
- 상품가격 : 20000
상품소개 : 이 책 좋음
JSON 이란?
JSON은 JavaScript Object Notation의 약자로, 사람이 읽기 쉽고 시스템 간에 데이터를 주고받을 때 사용되는 텍스트 기반의 표준 데이터 형식이다. 서버와 클라이언트 간에 데이터를 교환하거나 데이터를 저장하는 데 널리 쓰이며, 속성-값 쌍(key-value pairs)으로 구성되는 구조화된 데이터를 효율적으로 표현한다.
let book = {
title : "Node.js를 공부해보자",
price : 20000,
description : "이 책 좋음"
}
function print(obj){
console.log(obj.title);
console.log(obj.price);
console.log(obj.description);
}
print(book);
객체 보내기
res.json()에 json 객체를 담아 메소드 전달한다.
// response를 json으로 받기
app.get('/products/1', (req, res) => {
let book = {
title : "Node.js를 공부해보자",
price : 20000,
description : "이 책 좋음"
}
res.json(book);
})
파라미터id를 변수로 받아서 데이터 전달하기
- products/ ___빈칸에 오는 값을 n이라는 변수에 담기
- : => 나한테 URL로 매개변수를 전달해줄 건가 보다
- req.params : 요청 변수를 담는 메소드
- req.params.변수id로 출력 가능
// products/ ___빈칸에 오는 값을 n이라는 변수에 담기
// : => 나한테 URL로 매개변수를 전달해줄 건가 보다
// req.params
app.get('/products/:n', (req, res) => {
res.json({
num : req.params.n
})
// console.log(req.params.n);
})