develop/etc

REST API

아르르르를를르 2022. 7. 9. 18:11

정의

REST 아키텍쳐 스타일에 부합하는 API

그렇다면 API란: client와 server 사이 대화의 규칙

 

URI를 통해 자원을 지정하고,

HTTP 메서드를 통해 자원에 대한 행위(CRUD)를 표현한다.

  • post, get, put, delete

 

자원이란: 이름을 지닐 수 있는 모든 정보, 개념적인 대상, 객체라고 볼 수 있으며, 상태 변화 가능하다.

→ 변하지 않는 식별자가 필요하다

→ URI를 통해 자원을 식별해야 한다!

 

표현을 통한 자원에 대한 조작 (REpresentational State Transfer)

  • 자원의 현재 상태와 자원의 기대되는 상태를 URI로 표현함
  • 표현을 client와 server가 서로 주고 받게 된다

 

서버가 변해서 Response Data가 변경되었다.

그럼 클라이언트에서는 해당 API 응답를 통해서 어떤 데이터가 바뀌었는지 알 수 있게 된다.

예를 들어, 사용자가 게시글을 조회하였다면 다음 게시물 보기, 댓글 달기 등의 상태 전이를 API 본문에 href 형식으로 넣어주어야 한다는 것이다.

HATEOAS

  • 하이퍼미디어(링크)를 통한 앱 상태 전이
  • JSON에 URI 등 포함 가능
"links":[
    {
        "href":"http://~/email",
        "action":"GET"
    }
]

 

시스템을 통제할 수 있다고 생각한다면 REST에 시간을 낭비하지 말라!

 

API 설계의 방향성

1. 진짜 REST API 만들기 (aka. RESTful API)

2. REST 스타일의 API 만들기 (aka. HTTP API)

3. 다른 표준 API 선택하기 (e.g., GraphQL API)

 

Q. Rest API를 사용하지 않는다면 어떻게 될까?

A. 주소와 메서드만 보고 요청의 내용을 알아볼 수 있다는 장점이 사라져 백과 프론트 개발자들 사이의 혼선이 생길 수 있다.

 

 

 

참고

https://martinfowler.com/articles/richardsonMaturityModel.html

https://www.youtube.com/watch?v=Nxi8Ur89Akw

'develop > etc' 카테고리의 다른 글

gRPC  (0) 2022.07.21
실행계획 explain  (0) 2022.07.12
[vscode] java language server requires a JDK 11+ to launch itself  (0) 2022.02.14
개발자 포트폴리오 잘 만들기  (0) 2021.11.03
[wsl2] h2 실행하기  (0) 2021.09.25