기술

Rest API

칠구의 스터디 2024. 10. 30. 15:12

Rest  API

웹에서 데이터를 전송 및 처리하는 방법을 정의한 인터페이스

(A가 어떤 방식으로 요청하고 B가 어떤 방식으로 응답할지 정해 놓은 것)

 

Rest는 자원(리소스)과 행위 (HTTP 메소드)로 구성

  • 자원 (리소스) : URL
  • 행위 : HTTP Method

 


HTTP 메소드

HTTP 메소드는 CRUD로 표현이 가능하다

 

CRUD HTTP 메소드 설명
Create Post 데이터 생성
Read Get 데이터 조회
Update Put,Patch 데이터 전체 수정 , 데이터 일부 수정
Delete Delete 데이터 삭제

 

C(create) : POST

데이터를 생성할 때 사용

 

  • 회원가입이나 글 작성 후 게시가 여기에 해당
  • 성공적으로 데이터 생성 시 서버는 201 상태 코드 반환

 

R(read) : GET

데이터를 조회할 때 사용

 

  • 사용자 정보를 보거나 글 작성 목록을 볼 때 여기에 해당
  • URL 뒤에 고유식별자를 붙이면 해당하는 정보만 보는 것도 가능 

ex)

GET https://webtoon-crawler.nomadcoders.workers.dev/today

(출처 : 노마드코더 : https://github.com/serranoarevalo)

{"id":"774862","title":"조조코믹스","thumb":"https://image-comic.pstatic.net/webtoon/774862/thumbnail/thumbnail_IMAG21_41b9ed2a-760f-4bb3-bbfd-1778aefde525.jpg"},{"id":"823195","title":"쌉초의 난","thumb":"https://image-comic.pstatic.net/webtoon/823195/thumbnail/thumbnail_IMAG21_10484673-5368-4f70-9ef0-9950f426b5a8.jpg"},{"id":"824888","title":"이기적 연애론","thumb":"https://image-comic.pstatic.net/webtoon/824888/thumbnail/thumbnail_IMAG21_6fbbf8b5-b197-4abe-9602-61c6cdbc4dba.jpg"},{"id":"797443","title":"운명을 보는 회사원","thumb":"https://image-comic.pstatic.net/webtoon/797443/thumbnail/thumbnail_IMAG21_1e86ec68-b1b5-474f-9e8a-28a617cc5b13.jpg"},{"id":"808018","title":"흔한 빙의물인 줄 알았다","thumb":"https://image-comic.pstatic.net/webtoon/808018/thumbnail/thumbnail_IMAG21_4a4156ef-e224-4b1f-a41b-1b1de7fe3121.jpg"},{"id":"717481","title":"일렉시드","thumb":"https://image-comic.pstatic.net/webtoon/717481/thumbnail/thumbnail_IMAG21_3545800975505057126.jpg"},{"id":"775141","title":"66666년 만에 환생한 흑마법사","thumb":"https://image-

해당하는 모든 데이터를 가져옴

 

GET https://webtoon-crawler.nomadcoders.workers.dev/today/774862

{"title":"조조코믹스","about":"말 실수하면 모조리 처형한다!위험한 팀장 조쉬가 벌이는 기상천외한 오피스 사형법.‘근데 이 사형법…. 어쩐지 설레는데?’조쉬의 기이한 행동이 불러오는 로맨스.<조조코믹스>의 두 번째 이야기!","genre":"옴니버스, 로맨스","age":"전체연령가","thumb":"https://shared-comic.pstatic.net/thumb/webtoon/774862/thumbnail/thumbnail_IMAG06_1be5b6af-bc80-4b16-b357-a29f6000261c.jpg"}

아이디 : 774862에 해당하는 정보만 가져옴

 

 

U(Update) : PUT , PATCH

데이터를 수정할 때 사용

 

  • PUT은 전체 수정, PATCH는 부분 수정
  • put은 특정 자원 수정 시 사용되기 때문에 URL 뒤엔 고유 식별자가 붙어야 함(webtooncrawler.nomadcoders.workers.dev/today/774862 )
  • 작성한 글 수정이나 사용자 정보 수정 등등이 여기에 해당

만약 PUT를 사용해서 자원의 일부분만 수정한다면 나머지는 null 값이 될 수 있으니

부분 수정 시에는 patch 사용하기!!

 

{
"id" : 1,
"name" : '네임',
"age" : "나이"
}

이런 데이터에

{
  "name": "name"
}

put 메소드로 해당 데이터를 수정하면

 

{
  "id": null,
  "name": "name",
  "age": null
}

id랑 age는 포함하지 않았기 때문에 null 값으로 설정

 

 

D(delete) : Delete

데이터를 삭제할 때 사용

 

URL에 고유 식별자가 없을 시 서버는 무엇을 정확히 삭제해야 하는지 알 수 없어 실패하거나 오류를 반환할 수 있어

요청 시 고유식별자를 포함시켜야 함

DELETE  http://webtooncrawler.nomadcoders.workers.dev/today/774862 

 


 

상태코드 (status codes)

  • 2XX : 성공
  • 4XX : 클라이언트 오류
  • 5XX : 서버 오류

 

2XX

  • 200 : 성공
  • 201 : 자원이 생성됨 (post 메소드 성공)
  • 204 : 데이터 없음

상태 코드가 200이면서 화면에 잘 보이는 모습

 

 

4XX

  • 400 : 형식 오류
  • 401 : 인증 오류
  • 403 : 권한 없음
  • 404 : 자원 없음

원래 URL은 getData인데 getData11로 하자 404 (자원 없음) 오류가 뜨는 모습

 

 

5XX

서버 측 코드가 잘못되어 상태 코드가 500이 뜨는 모습

 

 

[출처]

https://github.com/serranoarevalo

REST API와 GET, POST, PUT, DELETE 통신에 대해

REST API - 이거 하나로 끝남