좋은 예) GET /members/1
안좋은 예) GET /members/delete/1 (행위에 대한 표현 포함 x)
안좋은 예) GET /members/delete/1 (행위에 대한 표현 포함 x, 적절한 메서드 사용)
좋은 예) DELETE /members/1
하나의 엔드포인트(Root endpoint)를 가진다.
// REST API
// 전체 반의 정보
example.com/class
// 1반의 정보
example.com/class/1
// 1반의 전체 학생 정보
example.com/class/1/students
// 1반의 1번 학생 정보
example.com/class/1/students/1
// GraphQL
// 하나의 엔드포인트에 다른 쿼리를 사용해 요청
example.com/graphql
원하는 응답 값만 골라서 받아올 수 있다.
// REST API
GET, https://swapi.dev/api/people/1
// REST API response
{
"name": "Luke Skywalker",
"height": "172",
"mass": "77",
"hair_color": "blond",
"skin_color": "fair",
"eye_color": "blue",
"birth_year": "19BBY",
"gender": "male",
"homeworld": "http://swapi.dev/api/planets/1/",
"films": ["http://swapi.dev/api/films/1/", "http://swapi.dev/api/films/2/", "http://swapi.dev/api/films/3/", "http://swapi.dev/api/films/6/"],
"species": [],
"vehicles": ["http://swapi.dev/api/vehicles/14/", "http://swapi.dev/api/vehicles/30/"],
"starships": ["http://swapi.dev/api/starships/12/", "http://swapi.dev/api/starships/22/"],
"created": "2014-12-09T13:50:51.644000Z",
"edited": "2014-12-20T21:17:56.891000Z",
"url": "http://swapi.dev/api/people/1/"
}
// GraphQL request
query {
person(personID: 1) {
name
height
mass
}
}
// GraphQL response
{
"data": {
"person": {
"name": "Luke Skywalker",
"height": 172,
"mass": 77
}
}
}
[간단정리] GraphQL이란? (REST api와 차이점)
REST API 대신 ‘그래프QL’ 선택 전에... 알아야 할 장단점 5가지
너무 좋은 글이네요. 공유해주셔서 감사합니다.