클라이언트
에는 웹 브라우저 뿐만 아니라, 스마트폰, 태블릿 등이 있음.서버
는 이러한 모든 클라이언트
의 요청에 응답을 해야됨.REST API
사용.REST(Representational State Transfer) API
서버
의 자원을 클라이언트
에 구애받지 않고 사용할 수 있는 설계
방식.REST API
방식에서는 HTTP
요청에 대한 응답으로 서버
의 자원을 반환함.서버
에서 보내는 응답은 특정 기기에 종속되지 않도록 모든 기기에서 통용
될 수 있는 데이터
를 반환함.서버
는 클라이언트
의 요청에 대한 응답으로 화면(view)
이 아닌 데이터(data)
를 전송함.응답 데이터
는 JSON(JavaScript Object Notation)
임.과거
에는 XML
을 많이 사용했지만, 최근
에는 JSON
으로 통일되는 추세.API(Application Programming Interface)
API
란 애플리케이션을 간편히 사용할 수 있게 하는, 미리 정해진 약속으로, 사용자와 프로그램 간 상호 작용
을 도움.REST API
는 클라이언트
와 서버
사이의 상호작용
, 즉 HTTP
요청에 따른 JSON
응답에 대한 약속임.XML
은 사용자 정의형 HTML
.JSON
은 JavaScript
방식을 차용한 객체 표현식
.XML : Extensible Markup Language
<article-form>
<id>1</id>
<title>제목입니다.</title>
<content>내용입니다.</content>
</article-form>
JSON : JavaScript Object Notation
{
"id": 1,
"title": "제목입니다.",
"content": "내용입니다."
}
JSON
데이터는 키(key)
와 값(value)
으로 구성된 정렬되지 않은 속성(property)
의 집합임.키(key)
는 문자열
이므로 항상 큰따옴표("")
로 감싸고, 값(value)
은 문자열인 경우에는 큰따옴표("")로 감싸주면 됨.{JSON} Placeholder
사이트(https://jsonplaceholder.typicode.com
).가짜(fake) API
를 사용해서 무료로 각종 테스트를 해볼 수 있는 서비스를 제공함.HTTP
요청 코드 -> JSON
데이터 응답.HTTP
요청을 보내고 응답 결과를 확인할 수 있음.자원(resources)
들.REST API
는 모든 HTTP
메서드를 지원함.guide
클릭.URL
경로가 https://.../post/1
을 보니 1번
게시글을 조회하는 요청임.출력 결과(output)
를 보면 1번 게시글의 id
, title
, body
, userId
가 응답 됐음.조회
할 때는 method
의 속성 값으로 GET
을 써야하는데 GET
은 method
속성의 기본값(default)
이라 이 경우 생략해도 됨.GET
요청이라서 method
속성을 생략.URL
경로는 https://.../posts
.데이터
생성 요청이므로 method
의 속성 값은 POST
.URL
경로는 https://.../posts
.body
부분을 보면 JSON
데이터로 새 게시글의 title(제목), body(내용), userId(사용자 아이디) 값도 같이 보낸 것을 확인할 수 있음.PUT
Vs PATCH
PUT
: 기존 데이터
를 전부
새로운 데이터로 변경함. 기존 데이터가 없다면 새로 생성
함.PATCH
: 기존 데이터
중에서 일부만
새로운 데이터로 변경.PUT | PATCH |
---|---|
![]() | ![]() |
데이터
수정 요청이므로 method
의 속성 값은 PUT
과 PATCH
를 사용했음.URL
경로는 https://../posts/1
이므로 1번
게시글 수정 요청임을 알 수 있음.PUT
방식 : 1번 데이터의 속성을 모두 수정 요청했음.PATCH
방식 : 1번 데이터의 title만 수정 요청 했음.method
의 속성값으로 DELETE
사용.URL
은 https://.../delete/1
이므로 1번
게시글 삭제.Talend API Tester
을 이요해서 HTTP
요청을 보내고 돌아오는 응답을 확인할 수 있음.응답(Response)
이 200으로 왔음.200
은 요청이 잘 처리됐다는 것을 의미하는 상태 코드
임.상태 코드
가 200
이 응답으로 왔음.404
에러가 떴음.상태 코드
404(not found)
는 요청한 페이지를 찾을 수 없다는 의미.데이터 생성을 요청.
201
이 왔음.상태코드
201
은 데이터가 잘 생성됐음을 의미함.body부분을 보면 새로 생성된 데이터가 JSON
형식으로 잘 반환되었음.
하단 HTTP
탭을 확인해 보면 요청 메시지
의 시작 라인과 헤더
에는 각종 정보가 있고, 본문
에는 새로 생성할 데이터가 있음.
응답 메시지
의 시작 라인과 헤더
에는 응답 정보가 있고, 본문
에는 생성 데이터가 실려서 반환되었음.id
는 자동으로 101번이 매겨졌음.응답
으로 500
이 왔음.상태 코드
500
은 서버 내부에서 에러가 발생했다는 것을 의미.응답
으로 200
.응답
으로 200
.HTTP 상태 코드
는 클라이언트
가 보낸 요청이 성공했는 지 , 실패했는 지 알려주는 코드임.상태 코드 | 설명 |
---|---|
1XX(정보) | 요청이 수신되어 처리 중. |
2XX(성공) | 요청이 정상적으로 처리되었음. |
3XX(리다이렉션 메시지) | 요청을 완료하려면 추가 행동이 필요함. |
4XX(클라이언트 요청 오류) | 클라이언트의 요청이 잘못되어 서버가 요청을 수행할 수 없음. |
5XX(서버 응답 오류) | 서버 내부에 에러가 발생해 클라이언트 요청에 대해 적절히 수행하지 못했음. |
HTTP 메시지
에 실려서 전송됨.HTTP 요청 메시지
에, 응답할 때는 HTTP 응답 메시지
에 내용이 실림.HTTP 메시지
는 시작 라인(start line)
, 헤더(header)
, 빈 라인(blank line)
, 본문(body)
으로 구성됨.요청
or 응답
내용이 있음. 항상 한 줄
로 끝남.부가 정보(metadata)
가 있음.헤더의 끝
을 알리는 빈 줄. 헤더가 모두 전송되었음
을 알림.전송하는 데이터
가 있음.요청 메시지
의 시작 라인
에는 요청의 종류(GET), , URL 경로(/posts/2), 사용하는 HTTP 버전(HTTP/1.1)이 있음.
헤더
에는 호스트 주소(jsonplaceholder.typicode.com, 어디로 보낼지에 대한 정보)가 있음.
그 아래에는 응답 메시지
.
시작라인
에는 HTTP 버전(HTTP/1.1)과 상태코드(200)이 있음.헤더
에는 응답을 보낸 날짜(date), 응답 데이터 형식(content-type) 등이 있음.
본문
에는 메시지에 실어 보내는 실제 데이터가 있음.