- header 속성: 리퀘스트 헤더에 포함된 파라미터. 보통 인증 혹은 권한 부여에 관련되어 있다.
- params 속성: 경로 매개변수를 사용하는 때만 필요하다. 경로 매개별수란 라우팅 할 때 사용하는 경로의 일부를 고정값이 아닌 매개변수로 사용하는 것을 말한다. 예를 들어 결로에 ':cc'와 같이 ':' 문자로 시작하는 부분이 있다면 해당 위치에는 동적인 값을 입력할 수 있는데, 이 값에 req.params.cc를 통해 접근할 수 있다 예를 들어 /global-stat/KR 경로로 요청하면 req.params.cc 값은 KR이다
app.get('/global-stat/:cc', (req, res) => {
const cc = req.params.cc;
...
});
- query 속성: 쿼리문 내의 파라미터. 엔드포인트가 끝난 뒤 물음표 뒤에 온다.
- body 속성: 리퀘스트 바디에 포함된 파라미터. 보통 JSON 형식으로 제출된다.
1) header 파라미터
header 파리미터는 보통 인증(Authentication; 특정 identity 제공)과 권한 부여(authorization; 특정 action 허용) 두 가지 목적으로 사용된다.
read-only API인 경우엔 키가 필요 없는 경우도 있다. 하지만 대부분의 상업용 API는 API 키나 다른 메서드를 통한 허가를 필요로 한다. 만약 이런 보안이 없다면, 유저들은 별다른 등록 없이 API를 무제한으로 콜할 수 있을 걸이고 이는 곧 수익 창출 문제를 야기한다.
또한 인증 절차가 없다면 유저 데이터를 가져올 때 어려움을 겪게 될 것이고, 악의적인 유저로부터 타 유저의 데이터를 보호할 수 없다. 그리고 누가 나의 API를 사용하는지 혹은 어떤 엔드포인트가 가장 자주 사용되는지 알 수 없게 된다. 즉 API 개발자는 반드시 API를 만들 때 인증과 허가에 대한 방안을 생각해 두어야 한다.
2) param vs query
- resource를 식별해야하는 상황에서는 param 속성이 더 적합하다
- 정렬이나 필터링을 해야하는 상황에서는 query 속성이 더 작합하다.
참고
- https://dar0m.tistory.com/222
'개발 > Must Have 코로나보드로 배우는 실전 웹 서비스 개발' 카테고리의 다른 글
01 mysql 오류로 허덕이다. (2) | 2022.06.09 |
---|