• 모든 자원은 명사로 식별한다
• HTTP 경로로 자원을 요청한다
• Ex)
• GET /users
• GET /users/{id}
ex)
$ curl -X GET 'localhost:3000/users'
--> 처럼, /get_users는 사용하지 않고, 명사형으로만 사용한다.
특정 요청일 때는 /users/1 과 같이 쓴다.
• 서버 자원에 대한 행동을 나타낸다. (동사로 표현)
• GET: 자원을 조회
$ curl -X GET 'localhost:3000/users'
• POST: 자원을 생성
$ curl -X POST 'localhost:3000/users' -[data]
: data를 기반으로 새로운 user를 만들어 달라. 라는 뜻이 될 것임.
• PUT: 자원을 갱신
• DELETE: 자원을 삭제
• 이는 익스프레스 어플리케이션의 메소드로 구현되어 있다
1) GET
$ curl -X GET 'localhost:3000/users'
한다면..
app.get('/users', (req, res) => {
res.send('users list')
})
2) POST
$ curl -X POST 'localhost:3000/users' [data]
요청하면,
app.post('/users', (req, res) => {
// create user..
res.send(user); // 만든 user을 응답.
})
만든 user로 응답한다.
: 사용자 목록 조회
const express = require('express')
const app = express()
const morgan = require('morgan')
const port = 3000
const users = [
{ id: 1, name: 'bek' },
{ id: 2, name: 'alice' },
{ id: 3, name: 'chris' },
]
// DB가 없으므로, 일단 배열을 넣어봄.
app.use(morgan('dev'))
app.get('/users', (req, res) => {
res.json(users)
})
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
})
$ npm start
: 이렇게 구동 가능한 이유는 package.json 파일에 script로 등록 해 놨기 때문.
$ curl -X GET 'localhost:3000/users' -v
이렇게 로그가 찍힘!!
( node의 morgan모듈은 로그를 찍는 모듈이다! morgan 모듈을 작동시켜서 이렇게 찍힌다.)
부등호_ 왼 : 요청에 대한 정보
오른쪽 : 응답에 대한 정보.
*cf) morgan
출처: https://backback.tistory.com/335 [Back Ground]
현재 콘솔에 나오는 GET / 200 51.267 ms - 1539 같은 로그는 모두 morgan 미들웨어에서 나오는 것이다.
요청에 대한 정보를 콘솔에 기록해준다.
var logger = require('morgan');
app.use(logger('dev'));
함수의 인자로
dev
short
common
combined
등을 줄 수 있다.
인자에 따라 콘솔에 나오는 로그가 다르다.
dev인 경우 GET / 200 51.267 ms - 1539의
보통 개발 시에는 short나 dev를 많이 쓰고,
배포 시에는 common이나 combined를 많이 사용한다.
인자를 바꿔서 로그가 어떻게 달라지는지 직접 확인해보자.
콘솔뿐만 아니라 파일이나 데이터베이스에 로그를 남길 수도 있다.
하지만 이러한 작업을 할때는 winston모듈을 더 많이 사용한다.