21.3.20

커피 내리는 그냥 사람·2021년 3월 19일
0

참고링크

Restful이란?

실제 면접에서 자주 출제되는 유형으로
Restful API를 설명하세요 / Restful하다는게 무엇일까요? 라는 식으로 많이 출제된다고 한다.

0. 탄생배경 :

(로이필딩) HTTP의 우수성에 비해 제대로 활용하지 못하는 모습이 아쉬워 HTTP 장점 최대한 활용할 수 있는 아키텍쳐로 낸 것이 REST개념. 즉 HTTP 기반으로 필요한 자원에 쉽게 접근할 수 있도록 도와주는 아키텍쳐.

1. REST? REST API?

  • REpresentational State Transfer : "웹에 존재하는 모든 자원에 고유 URI를 부여하여 자원에 대한 주소를 지정하는 방법론"
    즉 웹 상에 모든 내역에 대해 주소를 지정하는 방법에 대한 이론. 말뜻이 어렵지만 결국 '주소 짓는 방법'을 생각하면 되는 것 같다.

    적절한 예시인지는 모르겠으나 송장번호 쓰는 종이 같은 느낌?

  • 여기에 API?- > REST API?? : 자판, 버튼, 키보드 등 접점부의 사용할 수 있는 것 정도로 소프트웨어에서도 통용될 눈에 보이지 않는 어떤 장치. 공개된 메뉴얼 같은 것.

    기상청 서버로부터 미리 작성된 프로그램으로 날씨를 지정된 메뉴얼로 요청 받는 프로그래밍

  • 위의 REST와 연결하면 주소 짓는 방법을 사용하는 시스템 정도로 이해하면 될 것 같다.

2. 기본 배경 지식 (HTTP)

  • HTTP METHOD, Payload는 어느 정도 선행 지식이 있었지만 새로 알게된 개념이 하나 있었다. 바로 URI(Uniform Resource Identifier)
  • 해당 사이트의 특정 자원의 위치를 나타내는 '유일한' 주소

    즉 리소스를 구분하는 특정한 주소

  • http가 따로 붙지 않아 URL보다 큰 개념
    (URL은 http 등 다양한 요소를 필요방법을 식별해야 하므로 더 작은 개념)

3. Restful의 장점

  • 눈으로 보기만해도 경로가 명확하기 때문에 정보이해가 쉽다.
  • 계층 구조 확인이 편하다. 경로가 어디서 어디로 이어졌는지 알기 쉽다.

4. 몇 가지 설계 규칙 정리

  1. resource는 무조건 명사 ; HTTP 메서드가 모두 동사로 이미 행위를 표현한다.
  • 대문자, _ 사용 하지 않는다. 너무 길어질 경우 - 를 쓰기도 한다.
  1. resource 사이에 연관 관계가 있는 경우
  • /리소스/고유ID/관계 있는 리소스
    Ex)GET /users/{user_id}/profil

    이 부분은 프/백이 논의하여 결정하는 부분이라고 한다.

  1. 마지막 문자에 / 쓰지 않는다.

여기까지 알아본 내용이 path parameter였고

다음은 query parameter

검색 엔진을 사용하다보면 끝에 product?ordering=1 이런걸 본 적이 있을 것이다. 이것이 쿼리 파라미터인데 주로 key:value로 이뤄져 있으며 API 설계에 따라 다양하게 사용이 가능하다.

  • 예 :

  • 그럼 언제 많이 쓰이는가? :

  1. sorting : 순서대로, 파지네이션
  2. filtering
  3. searching

5. 다른 회사는 어떻게 설계하고 사용할까?

<gabia.라이브러리 참고>

  1. 사내 규칙이므로 기존 규칙과 다를 수 있음을 미리 고지하고 시작
  2. 크게 차이나는 점 :
  • 컨트롤 자원을 의미하는 URL 동사 허용
  • PUT 대신 PATCH를 사용 약속
  • 페이징 적당한 크기로 나눠서 응답

등 기존에 있는 규약에서 세세한 정보를 더 추가해서 약속을 하여 사용하고 있음.

가비아 가이드

기타. Status Code

  • 로그인, 회원가입 등 예외처리 시 잘 사용하기.

profile
커피 내리고 향 맡는거 좋아해요. 이것 저것 공부합니다.

0개의 댓글