오늘
HTTP 메서드를 통해서 GET이나 POST 등 클라이언트와 서버에 대한 요청과 응답을 주고 받을 수 있다.
이런 사용은 아무런 규칙없이 이루어지는 것이 아니라 요청과 응답을 할 때 제대로 보내고 받을 수 있는
일종의 규약이 존재한다.
예로들어 우리가 사이트를 만들면 여러가지 기능이 있을 것이다.
ex ) 회원가입, 회원 수정, 로그인 등등...
이런 기능들을 API 로 식별해서 구분한다.
즉 REST API란 웹에서 사용되는 데이터나 자원(Resource)을 HTTP URI로 표현하고 HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식을 말한다.
즉 음식점에 갔을 때 메뉴판 같은 역할을 하는 것.
음식점에 따라 메뉴가 다르고 메뉴이름도 다를테니 그 식당 메뉴판에 맞춰서 주문하는 것.
REST API 는 우리가 설명을 보지 않고 메서드 이름만 보고도 유추를 할 수 있어야 한다.
출처 : 코드스테이츠 유어클래스
단순히 HTTP 프로토콜을 사용하는 것.
Request
POST /appointment HTTP/1.1
{
"date" : "2022-08-10",
"doctor" : "허준"
}
Response
HTTP/1.1 200OK
{
"slots" : [
{ "doctor" : "허준", "start": "9:00", "end": "12:00"}
}
개별 리소스와의 통신을 준수해야 한다.
Request
POST /doctors/허준 HTTP/1.1
{
"date" : "2022-08-10"
}
Response
HTTP/1.1 200OK
{
"slots" : [
{ "id" : 123, "doctor" : "허준", "start": "9:00", "end": "12:00"}
}
CRUD에 맞게 적절한 HTTP 메서드를 사용하는 것에 중점을 둔다.
0단계와 1단계에서는 모든 요청을 POST하나로 했지만 2단계에서는 구분지어서 해야한다.
Request
GET /doctors/허준/slots?date=2022-08-10 HTTP/1.1
Response
HTTP/1.1 200OK
{
"slots" : [
{ "id" : 123, "doctor" : "허준", "start": "9:00", "end": "12:00"}
}
2단계와 동일하지만 Response 에는 리소스의 URI 를 포함한 링크 요소를 삽입하여 작성한다는 것이 다르다.
GET /doctors/허준/slots?date=2022-08-10 HTTP/1.1
Response
HTTP/1.1 200OK
{
"slots" : [
{ "id" : 123, "doctor" : "허준", "start": "9:00", "end": "12:00"}
],
"links" : {
"appointment" : {
"href" : "http://localhost:8080/slots/123",
"method" : "POST"
}
}
}
꾸준히 REST API 노력하면서 코드를 작성 할 필요가 있다.
Postman은 HTTP API 를 테스트 할 수 있는 도구이다.
endpoint URL이 http://3.36.72.17:3000
이고 뒤에 /kimcoding/messages 가 요청사항이 되겠다.
그래서 저 요청은 GET이니 김코딩이 작성한 메세지를 보고싶을때, 조회할 때 사용 할 수 있다.
https://코드스테이츠.com/product?name = "백엔드 코스"
라고 하면 필터링(쿼리 스트링을 사용. 키와 벨류로 구성)
https://코드스테이츠.com/product/3
= 텍스트 스트링을 사용하면 그냥 단순히 그 값을 가져오게 됨.
별도의 필터 없음
uri의 기준은 url-path 까지. 하지만 query가 포함되는 경우도 있음.
HTTP 상태코드
2xx : 성공
3xx : 리다이렉션 필요
4xx ; 클라이언트 요청 오류
5xx : 서버 내부 오류 (요청은 제대로 왔는데 서버에서 실패한 경우)
REST API에서 리소스는 자원을 HTTP URI로 표현.
명사로 표현 필수. 특이 케이스 빼고.
URI 는 다 소문자로!
행위는 메서드로 표현, 리소스는 URI로 표현.