get 과 post
GET은 서버의 리소스에서 데이터를 요청할 때, POST는 서버의 리소스를 새로 생성하거나 업데이트할 때 사용한다. POST 는 body 에 데이터를 담아 보내기 때문에 당연히 HTTP 메시지에 body가 존재한다.
app .get ('/ab?cd', (req , res ) => {
res .send ('Root - GET')
})
Path pattern
app .get (['/abc','/xyz'], (req , res ) => {
res .send ('Root - GET')
})
배열도 가능
라우터 미니피프로그램 하나의 미들웨어
const userRouter = express .Router ()
userRouter .get ('', (req , res ) => {
res .send ('User list')
})
userRouter .get ('/:id', (req , res ) => {
res .send ('User info with ID')
})
userRouter .post ('/', (req , res ) => {
// Register user
res .send ('User registered.')
})
// user 프리픽스가 있을 때만 동작
app .use ('/users', userRouter )
userRouter .param ('id', (req , res , next , value ) => {
// ID에 따른 처리
console .log (value )
next ()
}) // valuse 는 전달받은 ID
const USERS = {
15 : {
nickname : 'foo',
},
}
userRouter .param ('id', (req , res , next , value ) => {
console .log ('id parameter', value )
// @ts-ignore
req .user = USERS [value ]
next ()
})
userRouter .get ('/:id', (req , res ) => {
console .log ('userRouter get ID')
// @ts-ignore
res .send (req .user )
})
오브젝트
// nickname 업데이트 POST API
userRouter .post ('/', (req , res ) => {
// req.body: {"nickname" : "bar"}
// @ts-ignore
const {user }=req
const {nickname }=req .body
user .nickname =nickname
res .send (`user nickname updated: ${nickname }`)
})
http POST localhost:5000/users/15/nickname nickname=xxx
익스프레스 어떤요청이 오던간에 무조건 body를 파싱하지 않음
해결도구 - > npm install body-parser
사용법
app .use (express .json ())