티스토리 뷰

기술 면접

REST API 가이드

LuxuryCoding 2022. 2. 7. 21:15
728x90

REST API 가이드?

목차

  1. REST API URI 가이드
  2. HTTP 응답 상태 코드

✅ REST API URI 가이드

1. 복수형 명사와 소문자를 사용한다.

Bad

  http://ssafe.com/user

Good

  http://ssafe.com/users

2. 소문자를 사용한다.

주소에서 대소문자를 구분하므로, 카멜방식이 아닌 소문자를 사용하여 작성한다.

Bad

  http://ssafe.com/users/postComment

Good

  http://ssafe.com/users/post-comments

3. 언더바를 대신 하이픈을 사용한다.

가급적 하이픈의 사용도 최소화하며, 정확한 의미나 표현을 위해 단어의 결합이 불가피한 경우에 사용한다.

Bad

  http://ssafe.com/users/post_comments

Good

  http://ssafe.com/users/post-comments

4. 마지막에 슬래시를 포함하지 않는다.

슬래시는 계층을 구분하는 것으로, 마지막에는 사용하지 않는다.

Bad

  http://ssafe.com/users/

Good

  http://ssafe.com/users

5. 행위는 포함하지 않는다.

행위는 URL대신 Method를 사용하여 전달한다.(GET, POST, PUT, DELETE 등)

Bad

  POST http://ssafe.com/users/1/create-posts
  DELETE http://ssafe.com/users/1/delete-post/1
  PUT http://ssafe.com/users/1/update-post/1

Good

  POST http://ssafe.com/users/1/posts
  DELETE http://ssafe.com/users/1/posts/1
  PUT http://ssafe.com/users/1/posts/1

6.파일 확장자는 URI에 포함시키지 않는다.

REST API에서는 메시지 바디 내용의 포맷을 나타내기 위한 파일 확장자를 URI 안에 포함시키지 말고 Accept header를 사용하도록 한다.

Bad

  http://ssafe.com/users/moram.jpg

Good

  GET http://ssafe.com/users/moram
  HTTP/1.1 Host: ssafe.com Accept: image/jpg

7. 가급적 전달하고자하는 자원의 명사를 사용하되, 컨트롤 자원을 의미하는 경우 예외적으로 동사를 허용한다.

Bad

  http://ssafe.com/posts/registering

Good

  http://ssafe.com/posts/register

8. 검색, 정렬, 필터링 그리고 페이징을 위한 규칙 사용

상태 코드 설명
Sorting 예를들어 클라이언트가 정렬된 회사 목록을 가져오려는 경우 다음의 예처럼 처리 ex) GET /companies?sort=date_desc
Filtering 데이터셋의 데이터를 필터링 할 때, 다양한 쿼리 파라미터를 통해 필터링 처리 가능 ex) GET /companies?name=삼성&job=back-end
Searching 검색은 다음의 예제와 같이 표현 ex) GET /companies?search=companies
Pagination 페이징 처리 예제 ex) GET /companies?page=3

✅ HTTP 응답 상태 코드

200번대 : 성공

  • 200: Ok, 클라이언트의 요청을 정상적으로 수행함.
  • 201: Created, 클라이언트에게 생성 작업을 요청받았고, 생성 작업을 성공함.
  • 204: No Content, 요청은 성공했으나 응답할 콘텐츠가 없음.
  • 205: Reset Content, 요청은 성공했으나 클라이언트의 화면을 새로 고침하도록 권고
  • 206: Partial Content, 요청은 성공했으나 일부 범위의 데이터만 반환함.

300번대 : 리다이렉션

  • 301: Moved Permantly, 클라이언트가 요청한 리소스에 대한 URI가 영구적으로 변경되었음을 의미.
  • 302: Found, 요청한 URI가 일시적으로 주소가 바뀌었을 경우를 의미.
  • 303: See Other, 요청한 자원이 임시 주소에 존재함.
  • 304: Not Modified, 이전에 방문했을 때의 요청 결과와 다르지 않을 경우(캐시 된 페이지를 그대로 사용)
  • 307: Temporary Redirect, 임시 페이지로 리다이렉트.

400번대 : 클라이언트 오류

  • 400: Bad Request, 클라이언트가 올바르지 못한 요청을 보냄.
  • 401: Unauthorized, 인증 혹은 승인되지 않은 접근(로그인을 하지 않아 페이지를 열 권한이 없음)
  • 403: Forbidden, 금지된 페이지, 로그인을 하든 안하든 접근할 수 없음. (관리자 페이지)
  • 404: Not found, 찾을 수 없는 페이지, 주소를 잘 못 입력했을 때 사용함.인증받지 않은 클라이언트로 부터 리소스를 숨기기 위해 403 대신에 사용할 수도 있음.(해커들의 공격을 방지하고자 페이지가 없는 것처럼 위장하는 경우)
  • 405: Method Not Allowed, 허용되지 않은 요청 메소드를 받았을 경우.
  • 408: Request Timeout, 요청 시간이 초과됨.
  • 409: Conflict, 서버가 요청을 처리하는 과정에서 충돌이 발생한 경우. (회원가입 중 중복된 아이디인 경우)
  • 410: Gone, 영구적으로 사용할 수 없는 페이지.

500번대 : 서버 오류

  • 501: Not Implemented, 해당 요청을 처리하는 기능이 만들어지지 않음.
  • 502: Bad Gateway, 서버로 가능 요청이 중간에서 유실된 경우.
  • 503: Service Unavailable, 서버가 터졌거나 유지 보수 중(유지 보수 중일때는 유지 보수 중이라는 것을 알려주는 페이지로 전송해주는 것이 좋음)
  • 504: Gateway Timeout, 서버 게이트웨이에 문제가 생겨 시간 초과가 된 경우.
  • 505: HTTP Version Not Surpported, HTTP 버전이 달라 요청이 처리할 수 없음.

🤣 그동안에 REST API 만들었다고 했었는데 이러한 세세한 부분까지는 신경써서 못했었던 것 같습니다. 프로젝트를 진행하면서 Rest api 작성 규칙을 엄청 많이 검색했었는데 이렇게 한번 정리하고 나서 URI 작성 법과 status code(일부분)은 안보고도 대답 할 수 있을 것 같습니다.

'기술 면접' 카테고리의 다른 글

Nginx  (1) 2021.12.13
[Back-end] Java 질문 정리  (0) 2021.10.12
Spring Framework and Spring Boot  (0) 2021.10.01
댓글
최근에 달린 댓글
최근에 올라온 글
Total
Today
Yesterday
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30