REST API 와 JSON 의 등장 배경
- REST API(Representational State Transfer API)는 서버의 자원을 클라이언트에 구애받지 않고 사용할 수 있게 하는 설계방식 REST API 방식에서는 HTTP 요청에 대한 응답으로 서버의 자원을 반환
- 서버에서 보내는 응답이 독점 기기에 종속되지 않도록 모든 기기에서 통용될수 있는 데이터를 반환
- 서버는 클라이언트의 요청에 대한 응답으로 화면 (view)이 아닌 데이터(data)를 전송, 이때 사용하는 응답 데이터는 JSON(JavaScript Object Notation) , 과거에는 XML을 많이 사용했지만 최근에는 JSON으로 통일되는 추세
더보기
※ API (Application Programming Interface)
애플리케이션을 간편히 사용할수 있게 하는 , 미리 정해진 일종의 약속으로, 사용자와 프로그램 간의 상호작용을 도와줌여기서 다룰 REST API는 클라이언트와 서버 사이의 상호 작용, HTTP 요청에 따른 JSON 응답에 대한 약속
REST API 동작 살펴보기
- Talend API Tester 설치하기
- 구글 검색창에 talend api 확장 프로그램 검색
- 크롬 웹 스토어의 Talend API Tester 설치 후 확장 프로그램 추가버튼을 클릭
- 설치가 완료되면 프로그램 시작
- 이 프로그램을 사용해서 HTTP 요청을 보내고 돌아온 응답 확인 가능
- GET 요청하고 응답받기
- Talend API Tester 에서 머스드 GET 을 선택 후 URL 에 https://jsonplaceholder.typicode.com/posts를 입력
- 응답(Response)이 200으로 옴 BODY부분을 보면 1~100번까지 게시글의 JSON 데이터 확인 가능
- 1XX(정보) 상태 코드 : 요청이 수신돼 처리중
- 2XX(성공) 상태 코드 : 요청이 정상적으로 처리
- 3XX(리다이렉션 메시지) 상태 코드 : 요청을 완료하려면 추가 행동이 필요
- 4XX(클라이언트 요청 오류) 상태 코드 : 클라이언트의 요청이 잘못돼 서버가 요청을 수행할 수 없음
- 5XX(서버 응답 오류) 상태 코드 : 서버 내부에 에러가 발생해 클라이언트 요청에 대해 적절히 수행하지 못함
- 1번 게시글을 조회하기 위해서는 GET 요청은 그대로 두고 URL 마지막에 /1을 추가하면 1번 아이디를 가진 게시글의 JSON 데이터를 확인가능
- 101번 게시글을 조회하면 404 에러가 뜨면서 BODY부분에는 데이터가 없이 {}으로반 표시되어짐
- HTTP 요청 메시지와 응답 메시지
- GET 메서드로 데이터를 조회를 요청하고 응답은 HTTP 메시지에 실려 전송
- HTTP 메시지는 시작라인 (start line), 헤더(header), 빈 라인(blank line), 본문 (body)으로 구성
- 시작라인 : HTTP 요청 또는 응답 내용 존재 , 항상 한줄로 끝남
- 헤더 : HTTP 전송에 필요한 부가 정보 (metadata)가 있음
- 빈 라인 : 헤더의 끝을 알리는 빈 줄로, 헤더가 모두 전송되었음을 알림
- 본문 : 실제 전송하는 데이터 존재
더보기
<<<<< 시작 라인과 헤더 >>>>>>>>
HTTP/1.1 404
date: Sun, 10 Dec 2023 14:19:57 GMT
content-type: application/json; charset=utf-8
content-length: 2
report-to: {"group":"heroku-nel","max_age":3600,"endpoints":[{"url":"https://nel.heroku.com/reports?ts=1702217997&sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&s=J6oPQ%2FPUYFiTu2%2FZLA5x5aSP2sAMZjDxh6ocVQ65cUA%3D"}]}
reporting-endpoints: heroku-nel=https://nel.heroku.com/reports?ts=1702217997&sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&s=J6oPQ%2FPUYFiTu2%2FZLA5x5aSP2sAMZjDxh6ocVQ65cUA%3D
nel: {"report_to":"heroku-nel","max_age":3600,"success_fraction":0.005,"failure_fraction":0.05,"response_headers":["Via"]}
x-powered-by: Express
x-ratelimit-limit: 1000
x-ratelimit-remaining: 999
x-ratelimit-reset: 1702218028
vary: Origin, Accept-Encoding
access-control-allow-credentials: true
cache-control: max-age=43200
pragma: no-cache
expires: -1
x-content-type-options: nosniff
etag: W/"2-vyGp6PvFo4RvsFtPoIWeCReyIC8"
via: 1.1 vegur
cf-cache-status: MISS
priority: u=1,i
server: cloudflare
cf-ray: 833620328aa420f0-HKG
alt-svc: h3=":443"; ma=86400
<<<<< 시작 라인과 헤더 마지막 부분>>>>>>>>
<<<<< 본문>>>>>>
{}
<<<<< 본문 끝 >>>>>>
101번 아이디를 가진 게시글을 조회할때 생기는 HTTP 메시지
- POST 요청하고 응답받기
- 매서드를 POST로 선택하고 URL은 https://jsonplaceholder.typicode.com/posts 으로 수정
- 응답이 상태코드 201 로 옴 (201은 데이터가 잘 생성됐음을 의미)
- 데이터 생성 요청이 실패 했을때는 응답으로 500 이 옴 (500은 서버 내부에 에러가 발생을 의미)
- HTTP 응답 메시지 본문에 에러가 났음을 알리는 내용이 적
- PATCH 요청하고 응답받기
- 수정 요청은 PUT, PATCH 메서드를 사용하며 1번 게시글을 수정할수 있도록 URL https://jsonplaceholder.typicode.com/posts/1 으로 작성하고 수정할 내용은 BODY부분에 실어서 보냄
- 응답이 200으로 오고 수정된 내용이 반영됨
- DELETE 요청하고 응답받기
- 메서드를 DELETE 로 설정하고 URL https://jsonplaceholder.typicode.com/posts/10 으로 입력해 10번 게시글 삭제
- 응답이 200으로 옴
'BE > 스프링 부트 3' 카테고리의 다른 글
12장 서비스 계층과 트랜잭션 (0) | 2023.12.16 |
---|---|
11장 REST API의 동작 이해하기 (0) | 2023.12.13 |
9장 CRUD와 SQL 쿼리 종합 (0) | 2023.12.06 |
8장 게시글 삭제하기: Delete (2) | 2023.12.02 |
7장 게시판 수정하기 :Update (0) | 2023.11.29 |