RESTful

.·2022년 9월 18일

RESTful

RESTful: REST에 접미사 -ful을 붙여 REST의 제약을 준수했다는 의미

REST란? 웹에서 사용하는 아키텍처 중 하나
REST(Representational State Transfer)
-서버와 클라이언트간 통신 방식 중 하나
-자원을 이름으로 구분하여
-자원의 상태를 주고 받음

배경: 웹이 복잡해지면서 서버-클라이언트 통신 횟수가 늘어나면서, 통신 방식의 통일의 필요성이 커짐

1. 자원을 이름으로 구분하여

i) URI(Uniform Resource Identifier): 인터넷에 있는 자원을 나타내는 유일한 주소

-REST에서 자원을 구분하고 처리하기 위해 사용
-URI를 잘 네이밍 할수록 API가 직관적이고 사용하기 쉬움

URI 네이밍 규칙

  1. 명사를 사용해서 자원을 표현
    ex) /customers, /customers/{id}/address
    예외로 controller 역할은 동사를 사용하여 표현 가능
    ex) /game/play 접근시 게임 시작이면, 동사 play 표현 가능
  2. 자원간 계층관계를 표현하기 위해 / 사용
    ex) /customers/{id}
  3. -을 사용하여 URI 가독성을 높일 수 있다.
    ex)
    /profilemanagement (x)
    /profileManagement (x)
    /profile-management (o)
  4. URI에 가급적 밑줄을 사용하지 않음
    일부 브라우저나 화면에서 글꼴에 따라 _가 가려질 수 있다.
  5. URI에 소문자만 사용
  6. URI에 파일 확장자 표시 X
    ex) index.html (x)
  7. URI에 CRUD 함수의 이름 사용 X => HTTP 메소드를 통해 요청을 구분
  8. 자원의 필터링을 위해 새로운 API를 만들지 않음 => Query String을 이용한다.
    Query String: 주소?속성=값&속성=값&..(특정 주소로 이동할 때 페이지에 대한 옵션으로 활용)
    ex) crews?type=frontend&sort=name,asc
    crews중 frontend를 name에 따라 오름차순 정렬하는 경우

ii) Singleton & Collection Resources

-URI는 singleton 이나 collection으로 표현
ex)
/customer (singleton)
/customers (collection)

iii) Collection & Sub-collection Resources

-url는 서브 컬렉션을 포함 할 수 있음.
ex) customers/{id}/accounts

2. 자원의 상태를 주고 받는다.

클라이언트는 HTTP 메소드와 데이터를 통해 서버에 요청을 하고, 서버는 HTTP 상태코드와 데이터를 클라이언트에 응답을 한다.

i) HTTP 메소드: 자원의 상태를 주고 받기 위해 사용하는 메소드

GET: 자원 검색
ex) 유저 리스트를 얻어오고 싶으면 /users + HTTP 메서드 GET

POST: 자원 생성
body와 함께 이루진다. body: {'name': 'A', 'age': '20'}
ex) 유저리스트에 등록하려면 /users + HTTP 메서드 POST
=>db에 저장

PUT: 자원 업데이트
보내지 않은 정보는 null값 저장
body와 함께 전달

PATCH: 자원 업데이트
보내지 않은 정보는 기존 데이터를 유지 함.
body와 함께 전달

DELETE: 자원 삭제

ii) HTTP 상태 코드

1xx: 조건부 응답
2xx: 성공
3xx: 리다이렉션
4xx: 클라이언트 오류
5xx: 서버 오류
구체적인 내용은 필요할때 찾아보기

참고자료:
https://www.youtube.com/watch?v=xWA1eTPSzDE

profile
공부하고 정리하는 블로그

0개의 댓글