웹 브라우저뿐만 아니라 다른 기기에서도 정보를 요청하고 응답할 수 있게 하는 REST API와 JSON에 관해 알아보기
10.1 REST API와 JSON의 등장 배경
- 웹 서비스를 사용하는 클라이언트: 웹 브라우저, 스마트폰, 스마트워치, 테블릿 등
- 서버: 어떤 기기가 와도 기기에 맞는 뷰 페이지를 응답해야 한다 ➡️ REST API 사용하기
- API(Application Programming Interface): 애플리케이션을 간편히 사용할 수 있게 하는 미리 정해진 약속
- 자판기) 버튼이 하나의 API인데 콜라 버튼을 누르면 콜라가, 사이다 버튼을 누르면 사이다가 나오는 것 - 버튼에 따라 반환될 음료를 미리 약속한 셈
- 윈도우 API: 윈도우 개발을 위해 미리 정해진 약속
- 자바 API: 자바 개발을 위해 미리 만들어진 약속
- REST API: HTTP요청에 따른 JSON 응답에 대한 약속(클라이언트-서버 간의 상호작용)
REST API(Representational State Transfer API)
서버의 자원을 클라이언트에 구애받지 않고 사용할 수 있게 하는 설계 방식
➡️ HTTP 요청에 대한 응답으로 서버의 자원을 반환하는데, 서버에서 보내는 응답이 모든 기기에서 통용될 수 있는 데이터(JSON)를 반환한다.
- 서버는 클라이언트의 요청에 대한 응답으로 화면(view)가 아닌 데이터(data)를 전송
- 응답 데이터: JSON(JavaScript Object Notation)
- 과거에는 XML을 주로 사용했지만, 최근 JSON으로 통일되는 추세
- JSON 데이터: 키와 값으로 구성된 정렬되지 않은 속성의 집합
- 키: 문자열 - 항상 "" 로 감싸기
- 값: 문자열인 경우에만 "" 로 감싸기
10.2 REST API 동작 살펴보기
{JSON} Placeholder 사이트에서 연습용 REST API서버 이용가능
10.2.1 {JSON} Placeholder 사이트 둘러보기
- GET은 method 속성의 기본값이므로 생략 가능하다.
- POST 메서드를 통해 지정된 URL로 요청을 보내면 게시판에 새 글이 등록되고 새로 생성된 데이터는 JSON 형태로 바환
- 수정 요청 메서드인 PUT과 FETCH의 차이
- PUT: 기존 데이터를 전부 새 내용으로 변경하고, 기존 데이터가 없으면 새로 생성
- PATCH: 기존 데이터 중에서 일부만 새 내용으로 변경
10.2.2 HTTP 상태 코드
클라이언트가 보낸 요청이 성공했는지, 실패했는지 알려 주는 코드
상태 코드 | 설명 |
1XX(정보) | 요청이 수신돼 처리 중입니다. |
2XX(성공) | 요청이 정상적으로 처리됐습니다. |
3XX(리다이렉션 메세지) | 요청을 완료하려면 추가 행동이 필요합니다. |
4XX(클라이언트 요청 오류) | 클라이언트의 요청이 잘못돼 서버가 요청을 수행할 수 없습니다. |
5XX(서버 응답 오류) | 서버 내부에 에러가 발생해 클라이언트 요청에 대해 적절히 수행하지 못했습니다. |
➡️ 요청과 응답은 HTTP 메세지에 실려 전송된다. (요청 시 HTTP 요청 메세지, 응답 시 HTTP 응답 메세지에 내용이 실림)
10.2.3 HTTP 요청 메세지와 응답 메세지
- 시작 라인: HTTP 요청 또는 응답 내용이 있다. 항상 한 줄로 끝난다.
- 헤더: HTTP 전송에 필요한 부가 정보(meta data)
- 빈 라인: 헤더의 끝을 알리는 빈 줄로, 헤더가 모두 전송되었음을 알린다.
- 본문: 실제 전송하는 데이터가 있다.
HTTP 요청 메세지
- 시작 라인
- 요청의 종류(GET)
- URL 경로(/posts/100)
- 사용하는 HTTP 버전(HTTP/1.1)
- 헤더
- 호스트 주소(jsonplaceholder.typicode.com - 어디로 보낼지에 대한 정보)
HTTP 응답 메세지
- 시작 라인
- HTTP 버전(HTTP/1.1)
- 상태 코드(200)
- 헤더: 응답을 보낸 날짜, 응답 데이터 형식 등
- 본문: 헤더에서 한 줄 띄고 난 다음 내용
- 메세지에 실어 보내는 실제 데이터
- 페이지를 찾을 수 없다는 404 에러가 났다면 본문은 비어 있게 된다. ({})
'CS > 스프링부트3 자바 백엔드 개발 입문' 카테고리의 다른 글
[REST API와 테스트 코드 작성하기] 12장 | 서비스 계층과 트랜잭션 (0) | 2025.03.05 |
---|---|
[REST API와 테스트 코드 작성하기] 11장 | HTTP와 REST 컨트롤러 (0) | 2025.03.01 |
[게시판 CRUD 만들기] 9장 | CRUD와 SQL 쿼리 종합 (0) | 2025.02.27 |
[게시판 CRUD 만들기] 8장 | 게시글 삭제하기: Delete (0) | 2025.02.27 |
[게시판 CRUD 만들기] 7장 | 게시글 수정하기: Update (0) | 2025.02.22 |