[CS] REST API 개념

Onam Kwon·2022년 7월 26일
0

CS

목록 보기
4/22
post-custom-banner

REST API

  • Representational state transfer: 서버와 클라이언트간 분리된 구성 요소 간의 통일된 인터페이스를 제공하는 소프트웨어 아키텍쳐.
    • 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위해 만들어짐.
  • REST자원(Resource), 행위(Verb), 표현(Representations)으로 구성된 API 아키택쳐이다.
    • URI는 정보의 자원을 표현해야 한다.
    • 자원에 대한 행위는 URI에 동사로 표현하지 않고 HTTP Method를 사용한다.
  • stateless(무상태성): 클라이언트의 각 요청은 매번 개별적으로 실행됨, 서버가 클라이언트로 받는 요청은 이전, 이후의 요청과 전혀 관계가 없음을 나타냄.
    • 처음 로그인에 성공한 후 다음 요청에 관해서는 세션이나 토큰 처리를 안해놓았다면 서버는 클라이언트가 누군지 모른다.
      • 그러므로 매 요청시 서버에게 클라이언트가 누군지 나타내도록 별도의 작업이 필요하다.
    • 매 요청은 반드시 개별 요청을 만족하기 위한 충분한 정보를 제공해야함.

설계 규칙

  • URI는 소문자 사용.

HTTP Methods

  • 자원에 대한 행위는 HTTP Method로 표현한다.
    • GET(읽기): 서버로부터 정보를 조회 또는 요청, http header에 담아서 전송.
      • 브라우저 검색창에 주소를 기입후 접속은 GET요청에 해당.
      • 제일 빈번하다.
    • POST(쓰기): 클라이언트에서 서버로 데이터 생성, http body에 담아서 전송.
      • 블로그, 페이스북, 인스타그램등 게시글을 포스팅 하는 행위(글 작성).
    • PUT(수정): 클라이언트가 서버에게 지정한 URL 데이터 저장 요청, POST와 유사.
      • 생성한 게시글 수정.
    • DELETE(삭제): 클라이언트가 서버에게 지정한 URL데이터 삭제 요청.
      • 생성한 게시글 삭제.
  • URIHTTP Method가 포함하지 않는다.
    • GET /members/show -> GET /members/1
    • GET /members/insert/2 -> POST /members/2

예시

CRUDHTTPURI
전체 리소스 조회GET/resources
특정 리소스 조회GET/resources/:id
리소스 생성POST/resources/:id
리소스 수정PUT/resources/:id
특정 리소스 삭제DELETE/resources/:id

Response code

  • 1xx: 전송 프로토콜 수준의 정보 교환.
  • 2xx: 클라이언트 요청이 성공적으로 완료됨.
    • 200(OK): CRUD의 성공적인 완료 상태 코드.
  • 3xx: 클라이언트는 요청을 완료하기 위해 추가적인 행동을 취해야 함.
  • 4xx: 클라이언트의 잘못된 요청.
    • 403(Forbidden): 클라이언트가 컨텐츠에 접근할 권한을 가지고 있지 않음.
    • 404(Not Found): 클라이언트의 요청 리소스를 서버가 찾을 수 없음, 브라우저에서는 알려주지 않은 URL을 의미.
  • 5xx: 서버측 오류로 인한 상태 코드.

References

profile
권오남 / Onam Kwon
post-custom-banner

0개의 댓글