REST API(RESTful API)-파라미터의 종류와 개요

hannah·2023년 10월 26일
0

JavaScript

목록 보기
114/121

앞서 API와 RESTful API에 대해서 알아보았다.

REST API의 파라미터에는 4가지 타입이 있다.

  • HTTP header : HTTP가 빌트인으로 갖추고 있는 key, value 형태(정확히는 field name, field value)의 데이터로 보통 인증 혹은 권한 부여에 관련되어 있다.

  • Query parameter : URL 끝 부분(엔드포인트)에 ?를 붙인 후에 추가되는 파라미터들

  • Path parameter : URL 안에 있는 특정 경로 값들

  • Body parameter : HTTP request body에 담겨지는 값으로 보통 JSON 형식으로 제출된다.

👉 1. HTTP header

header 파라미터는 보통 인증(Authentication; 특정 identity 제공)과 권한 부여(authorization; 특정 action 허용) 두 가지 목적으로 사용된다.

왜 필요한가?

read-only API의 경우엔 키가 필요 없는 경우도 있다. 하지만 대부분의 상업용 API는 API 키나 다른 메서드를 통한 허가를 필요로 한다. 만약 이런 보안이 없다면, 유저들은 별다른 등록 없이 API를 무제한으로 콜할 수 있을 것이고 이는 곧 수익 창출 문제를 야기한다.

또한 인증 절차가 없다면 유저 데이터를 가져올 때 어려움을 겪게 될 것이고, 악의적인 유저로부터 타 유저의 데이터를 보호할 수 없다. 그리고 누가 나의 API를 사용하는지 혹은 어떤 엔드포인트가 가장 자주 사용되는지 알 수 없게 된다. 즉 API 개발자는 반드시 API를 만들 때 인증과 허가에 대한 방안을 생각해두어야 한다.

- header 파라미터 권한 부여(authorization)의 종류

API Key, Basic Auth, HMAC(Hash-based message authorization code), OAuth 2.0

👉 2. Query parameter

엔드포인트에서 물음표(?) 뒤에 등장하는 query 파라미터는 다음과 같은 형식을 지닌다.

/posts?author=hannah&stars=200&time=140

가끔 path 파라미터와 query 파라미터 중 무엇을 사용할지 고민하곤 하는데, REST API의 모범을 준수하자면 path 파라미터는 특정 리소스를 정의할 필요가 있을 때, query 파라미터는 정렬 혹은 필터링이 필요할 때 사용한다.

👉 3. Path parameter

path 파라미터는 엔드포인트의 일부이다. 예를 들어, 아래의 엔드포인트에서 {user}와 {bicycleId}에 각각 그 값이 들어간다.

/service/myresource/user/{user}/bicycles/{bicycleId}

👉 4. Body parameter

보통 POST 리퀘스트에서는 JSON 오브젝트를 리퀘스트 바디 안에 넣어 보낸다. 이것이 바로 request body 파라미터이며 주로 JSON으로 되어 있다.

Client에서 보내주는 JSON, XML, Multi Form 등의 데이터를 담고 주소에서는 확인할 수 없다.

요청 본문에 제출된 (키-값) 데이터 쌍을 포함한다. req.body는 body-parser를 사용하기 전에는 default 값으로 undefined로 설정되기 때문에 body-parser를 사용하여 해결해야 한다.(express.json(),express.urlencoded() 와 같은 미들웨어를 사용해야 한다.)

body-parse 미들웨어

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extends: true }))

{
	"days": 2,
	"units": "imperial",
	"time": 1433524597
}

0개의 댓글