express에서 GET Method와 POST Method에 대해 어떻게 파라미터를 가져오는지(받는지) 포스팅하겠다.
GET Method : Parameter(파라미터)로 받기
const express = require("express")
const app = express()
app.use(express.json())
app.get("/api/persons/:id", (request, response, next) => {
const params = request.params
const id = request.params.id
console.log(params.id)
response.send(id)
})
위 방법은 client가 보낸 request에 있는 params로 파라미터를 받는 방법이다.
"/api/persons/52"의 GET Method로 request가 들어오면 52를 콘솔 창에 출력하고, response으로 보낸다.
request는 json 형식으로 적혀있기 때문에, key-value 형태로 접근하면 된다.
POST Method : Body(바디)로 받기
app.post("/api/persons", (request, response)=>{
const name = request.body.name
const age = request.body.age
console.log("name ",name)
console.log("age ", age)
response.send({name, age:age})
})
위 방법은 client가 보낸 request의 body 부분으로 파라미터를 받는 방법이다.
"/api/persons"의 POST Method로 request가 들어오면 body의 name과 age를 읽고 출력하고, 이를 json 형태로 response로 보낸다.
여기서 {name, age:age}라고 되어 있는 부분은 javascript 언어의 유연함을 보여준다.
name만 쓰고 key:value 형태로 명시하지 않았지만, 자동으로 {name:name}을 쓴 것과 같은 의미를 가진다.
즉 키 값이 주어지지 않았을때 변수명을 키값으로 자동으로 사용한다는 것이다.
또 위 보다 더 나은 방법이 있다.
app.post("/api/persons", (request, response)=>{
const {name, age} = request.body
console.log("name ",name)
console.log("age ", age)
response.send({name, age:age})
})
이렇게 사용하면 각 변수마다 일일이 초기화하지 않고 한꺼번에 값을 대입할 수 있다.
여기서도 javascript의 편리함이 나타난다(javascript는 object 표현 및 처리가 편한 것 같다.)
request.body에 있는 적절한 key와 초기화할 변수 이름을 match 시켜 그 value로 초기화해준다!
결과는 첫 번째 방법과 같지만, 훨씬 편리하다.
그 외
POST Method도 /:id를 쓸 수 있지만, 일반적으로 create를 담당하기 때문에 특정 id가 필요 없다.
보통, PUT Method는 /:id와 body 둘 다 써서 파라미터를 받는다.(기존의 특정 id의 person의 정보를 수정해야 하니까)
예외적으로, GET Method로는 body를 받을 수 없다.
그 이유는 특정 경로로 들어올 때의 응답의 consistency(일관성)을 유지하기 위해서이다. (GET은 resource를 읽기만 위함이므로)
(일반적으로 잘 구현된 rest api의 design 패턴 중 핵심은 응답의 일관성이다. 아래는 그에 관한 자료)
'개발 > node' 카테고리의 다른 글
import 시 확장자( .js ) 및 index 생략 (0) | 2022.11.22 |
---|---|
콜백(callback) 함수를 Promise로 바꾸기 (콜백함수로 await 쓰기) (0) | 2021.07.20 |
Mongoose 개념 및 사용법 정리 (0) | 2021.03.19 |
댓글