본문 바로가기
Software Tech/Javascript (feat.HTML)

RESTful API

by SuperDev 2024. 12. 14.

API란?

  • API는 Application Programming Interface의 약자로 응용 프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 말합니다. 쉽게 정의하면 A가 특정한 명령을 요청하면 B는 특정한 응답을 하는 일종의 약속을 말합니다.
  •  API를 통해 하는 일은 크게 Create, Read, Update, Delete 4가지로 구분할 수 있고, 우리가 사용하는 대부분의 서비스들은 대부분 이 4가지로 구성되어 있습니다.

 

 

RESTful API

  • RESTful API는 "A가 어떤 방식으로 요청하고, B가 어떤 방식으로 응답할지 정해놓은 다양한 형식들 중 하나"이며, REST 아키텍처 스타일의 원리를 따르는 API 입니다. "RESTful API"라고 하려면 REST의 설계 규칙을 일관되게 따라야 합니다.
  • HTTP URL에 자원(Resource)을 명시하여 사용하며, HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해 해당 자원(URL)에 대한 CRUD를 정의합니다.
  • RESTful API의 요청과 응답에는 구조화된 데이터 표현이 가능하면서도 가벼운 JSON이 많이 사용되고 있습니다.

 

1. GET, DELETE

  • [ GET, DELETE ] 방식은 데이터를 조회하거나 삭제하는 요청이기 때문에 많은 정보를 실어 보낼 필요가 없으며, 아래와 같이 자원을 명시하는 곳에 복수형인 'books'를 붙여 요청하면 서버에서 책 목록을 응답합니다.
  • 특정 조건으로 필터링하려면 query parameter를 사용하면 됩니다.
  • 필터링 조건이 없는 상태에서 모든 책의 정보를 보내면 부하가 걸리기 때문에 페이징 정보를 붙여 사용합니다.
  • 특정 데이터를 반환하기 위해서는 자원에 식별자를 붙여 사용합니다. 단 DB에 각 항목마다 고유값이 설계되어야 합니다.
  • 각 리소스는 상위, 하위 리소스를 가질 수 있습니다. 이는 url를 통해 쉽게 파악할 수 있습니다.
GET  https://api.github.com/v1/books  (books 조회)
GET  https://api.github.com/v1/books?page=1&size=10  (페이징 정보)
GET  https://api.github.com/v1/books/(식별자 : 특정 항목만 조회)
DELETE  https://api.github.com/v1/books/1  (식별자 : 특정 항목만 삭제)
GET  https://api.github.com/v1/books/1/reviews  (식별자가 1인 하위 리소스인 reviews 조회)

 

 

2. POST, PUT, PATCH

  • [ POST, PUT, PATCH ]는 body라는 공간이 있어서 용량이 큰 데이터를 실어서 보낼 수가 있습니다.
POST  https://api.github.com/v1/books  (books 리소스에 데이터를 추가)
PUT  https://api.github.com/v1/books/1  (식별자 : 특정 항목의 정보를 전체적으로 대체할 때 사용)
PATCH  https://api.github.com/v1/books/1  (식별자 : 특정 항목의 특정 값만 대체할 때 사용)
GET  https://api.github.com/v1/books/1/reviews  (식별자가 1인 하위 리소스인 reviews 조회)

 

 

 

3. HATEOAS

  • RESTful API에서 권장되는 또 다른 원칙은 HATEOAS 입니다. 각 요청의 응답에 가용한 다른 요청들의 정보를 포함시키는 것으로 응답 데이터에 href 혹은 다른 요청들의 정보를 담아놓는 것입니다.
  • 이렇게 하면 개발자는 API 문서를 뒤져보지 않아도, 다음에 어떤 요청을 보낼 수 있는지 확인할 수 있고, API의 세부사항이 변경되더라도, 클라이언트의 코드를 고칠 필요도 없어집니다.
Hypermedia  As  Engine  Of  Application State

 

 

4. HTTP Status Code

http는 상태 정보를 통해 요청이 어떻게 처리되었는지 확인할 수 있습니다. 그리고 클라이언트에서 어떤 요청에 대한 응답을 캐싱해두면 같은 요청을 할 때마다 요청을 보내지 않아도 되고, 서버도 특정 요청에 대해 응답한바를 기억해두면 같은 다른 클라이언트가 같은 요청을 보냈을 때, 데이터베이스에서 정보를 캐낼 필요가 없습니다.

 

참고 영상

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

728x90

'Software Tech > Javascript (feat.HTML)' 카테고리의 다른 글

Web Socket (웹 소켓)  (1) 2024.12.14
DOM Tree  (1) 2024.11.19