restAPI란 Representational State Transfer API의 약자이다. 먼저 용어 자체의 정의를 찾아보려고 했지만 만족할만한 의미를 찾지 못해서 직접 추측을 해본다면, 먼저 Representational의 의미는 '대표'라는 의미도 있고 '추상적' 의 반대말인 '구상주의적' 이라는 뜻이 있다. 뭔가 추상 반대말이라고 하니까 클라이언트와 서버 사이에 주고 받는 데이터 혹은 리소스를 의미하는 듯하다. 그 다음 State는 상태라는 의미이고 transfer은 전달이라는 의미이다. 합쳐보면 '리소스를 전달하는 방식' 같은 의미로 추측이 된다.
위의 추측이 정확한지는 모르겠지만 공부를 해보니 얼추 유사한 느낌인 것 같기는 하다. 지금껏 RestAPI의 규칙을 몰랐지만 알게 모르게 지킨 것도 있는 것 같다. RestAPI에 대해 좀 더 추측해보면 URL 경로를 지정해 줄 때 정해진 규칙에 의해 작성하는 것을 권장한다는 의미로 만든 규약같다.
URL에는 리소스를 포함해야한다.
URL을 지정해주는 규칙은 동사보다는 명사를 사용해서 리소스에 대한 정보를 내포하고 있어서 URL만 봐도 어떤 정보를 응답으로 받을지 알 수 있어야 한다.
리소스에 대한 행위는 HTTP method(POST, GET, PUT, DELETE)로 표현한다.
리소스를 생성해야 하면 POST, 조회해야 하면 GET, 수정해야 하면 PUT, 삭제해야 하면 DELETE를 사용한다.
슬래시(/)는 계층 관계를 나타내는데 사용한다. URL 마지막에는 포함시키지 않는다.
가독성을 위해 하이픈(-)을 사용할 수 있다. 언더바(_) 제외
URL이 길어질 경우 읽기 수월하도록 -을 사용할 수 있다.
URL에 파일 확장자까지 포함시키지 않는다.
둘 다 HTTP 메서드에서 수정을 담당하는 method이다. 둘의 차이라고 한다면 PUT의 경우 요청된 데이터 중 일부가 없을 경우 없는 데이터에 대해서는 null 값이 저장된다.
반면 PATCH는 요청된 데이터 중 일부가 없을 경우엔 요청 받은 데이터만 수정이 되고, 나머지 데이터는 기존의 데이터 값을 유지한다.