RestfulAPI

김예진·2023년 9월 10일

spring

목록 보기
13/13

API(Application Programming Interface)

: 소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청, 명령을 받을 수 있는 수단

REST API

  • 각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습 자체로 추론 가능하는 것
  • 요청을 보내는 주소만으로도 이것이 어떤 요청인지 파악이 가능!

EX. 학원 DB에게 정보를 보내달라는 요청을 할 때

1. http://(도메인)/classes

-> 주소에 Classes가 붙는다면 학원의 반들 목록을 받아오는 요청

{
  "results" : [
     {"idx" : 1 , "name": "예비반"},
     {"idx" : 2 , "name": "초급반"},
     {"idx" : 3 , "name": "중급반"},
     {"idx" : 4 , "name": "고급반"},
  ]
}

2. http://(도메인)/classes/2

-> 뒤에 idx, 고유번호가 따라붙으면 여러 반들 중 인데스 번호가 2인 반의 정보가 온다.
{"idx" : 2 , "name": "초급반"}

3. http://(도메인)/classes/2/students

-> 그 뒤에 students를 붙여서 보내면 이 반에 해당하는 학생들의 정보

  {
 "results" : [
    {"idx" : 1 , "name": "홍길동", "sex": "male"},
    {"idx" : 2 , "name": "전지현", "sex": "female"},
    {"idx" : 3 , "name": "강동원", "sex": "male"},
    {"idx" : 4 , "name": "송혜교", "sex": "female"},
 ]
}

4. http://(도메인)/classes/2/students/15

-> 또 idx가 붙이면 인덱스가 2인 반의 학생들 중 인덱스가 15인 학생의 정보

  {"idx" : 15 , "name": "윤두준", "sex": "male"}
  

5. http://(도메인)/classes/2/students?sex=male

-> 조건을 붙여서 남학생들의 정보만 받아올 수 도 있다.

   {
  "results" : [
     {"idx" : 1 , "name": "홍길동", "sex": "male"},
     {"idx" : 3 , "name": "강동원", "sex": "male"},
     {"idx" : 8 , "name": "원빈", "sex": "male"},
     {"idx" : 15 , "name": "윤두준", "sex": "male"},
  ]
}

URI

: 자원을 구조와 함께 나타내는 형태의 구분자
ex. http://(도메인)/classes/2/students/15


이런 조회작업(위의 1~5번) 뿐만 아니라 정보를 새로 넣거나 수정하거나 삭제하는 작업도 필요하다
이를 통틀어 C(생성) R(조회) U(수정) D(삭제) 라고 부르는데
서버에 REST API로 요청을 보낼 때는 HTTP라는 규약에따라 신호를 전송(이때, HTTP메소드에는 여러 메소드가 있다. GET, POST, DELETE, PUT, PATCH등) REST API에서는 주로 GET, POST, DELETE, PUT 이 4가지를 사용한다.

소포가 편지보다 더 많은 걸 담을 수 있듯이 POST, PUT, PATCH 에는 BODY란 주머니가 있어서 정보들을 GET이나 DELETE 보다 많이, 비교적 안전하게 감춰서 실어보낼 수 있다.

이것들의 기능이 특정 용도에 제한되어 있지는 않다.
post 하나로도 데이터를 읽고, 쓰고 수정하고 지우기까지 다할 수 있다. 하지만 누구든 각 요청의 의도를 쉽게 파악할 수 있도록 RESTful API를 만들기 위해서는 이들을 목적에 따라 구분해서 사용해야 한다.

GET - 데이터를 Read, 조회 시 사용

POST - 새로운 데이터 추가(BODY에 새로운 정보 실어보냄)

PUT - 특정 정보 수정(URI에 해당 학생의 인덱스 추가하여 명시, 수정할 내용 BODY에 전달)

DELETE - 정보 삭제 (URI에 해당 정보의 인덱스 명시)

=> PUT과 PATCH 는 쓰는 곳마다 다르고 그냥 PUT으로 다하는 곳들도 있는데
정석으로는 PUT은 정보를 통째로 갈아끼울 때, PATCH는 정보 중 일부를 특정 방식으로 변경할 때 사용한다.

결국 REST API란, HTTP 요청을 보낼 때 어떤 URI에 어떤 메소드를 사용할 지 개발자들 사이에 널리 지켜지는 약속이다.

profile
코린이

0개의 댓글