📌 API에 링크를 사용하라
링크가 있는 API를 사용하면 개발자가 데이터를 검색하는 방법을 이해하기 위해 문서를 읽는 시간을 절약할 수 있습니다.
예를 들어, 다음의 왕좌의 게임 API를 살펴볼까요? [https://anapioficeandfire.com/]
```
{
"id": "583",
"name": "Jon Snow",
...,
"father": "2342",
"mother": "1243",
"spouse": "4553",
...,
}
```
왕좌의 게임 캐릭터들의 관계를 매핑하는 웹 사이트를 만들고자 한다면, ID가 "2342", "1243", "4553"인 리소스의 URL을 만들기 위해 URI 템플릿에 대한 문서를 확인해야 합니다.
대신, 링크를 사용하였다면 어떨까요? 이것이 훨씬 좋은 패턴입니다.
```
{
"id": "https://anapioficeandfire.com/api/characters/583",
"name": "Jon Snow",
...,
"father": "https://anapioficeandfire.com/api/characters/2342",
"mother": "https://anapioficeandfire.com/api/characters/1243",
"spouse": "https://anapioficeandfire.com/api/characters/4553",
...,
}
```
이제 개발자는 문서를 살펴볼 필요 없이 API 링크를 이용하는 코드를 작성할 수 있습니다.
📌 쿼리 URL은 예측 가능하게
프로그래밍 하면서 창의성을 발휘할 장소는 많지만, 쿼리 URL은 그에 속하지 않습니다.
다음 두 개의 URL 중에 기억하기 쉬운 패턴은 어떤 걸까요?
- A: https://dogtrackercom/person/{personId}/dogs
- B: https://dogtrackercom/getPeopleFunction/{personId}/getAlldogs
옵션 A가 기억하기 쉬울 뿐만 아니라 각 객체 간의 관계를 더욱 명확하게 보여줍니다.
📌 필요한 것만 제공하라
강아지 사진 1,000,000장을 2.32초에 돌려주는 API보다 0.083ms에 100장의 강아지 사진을 돌려주는 API를 호출하면 사용자를 유지할 가능성이 높습니다.
또한 개발자가 리소스에 대해 필요한 정보만 검색하는 데 사용할 수 있는 필드를 갖는 것이 유용할 수 있습니다.
- https://dogtracker.com/dogs?fields=name,color,location
이렇게 하면 모든 개의 이름, 색상 및 위치만 검색됩니다.