제가 나중에 보기 위해 정리해놓은 자료이므로 틀린 내용이 있을 수 있습니다. 댓글로 피드백 주시면 바로 수정하겠습니다. 감사합니다. ☺️ - 민쏜 -
클라이언트와 서버는 Request(요청)과 Response(응답)을 주고 받는다.
POST /form/entry HTTP /1.1 <- 시작라인: 메소드 / 요청대상(경로) / HTTP 버전
Host: www.naver.com <- Header 시작: 모든 부가 정보
Connection: Keep-alive (HTTP 전송에 필요한 메타 데이터)
Content-Type: application/x-www-form-urlencoded
Content-Length: 16 <- Header 끝: 예시일 뿐, 실제로는 더 많은 정보가 있다.
<- 공백 라인
name=gildong&age=20 <- Message Body: 실제 전송할 데이터
(JSON, HTML 문서, 이미지, 영상 등)
GET /search?q=apple&hl=ko HTTP /1.1 <- apple을 검색해주고, 언어는 한국어로 해줘
Host: www.google.com
?q=apple&hl=ko
?
로 시작한다key=value
의 형태&
를 붙여 조건을 추가한다GET /search HTTP /1.1
Host: www.google.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 13
q=swift&hl=ko <--- POST / PUT / PATCH의 경우 이렇게 Message Body에 넣는다.
GET의 경우 보통 여기가 아니라 Query Parameter를 통해 보낸다.
HTTP /1.1 200 OK <- 시작라인: HTTP 버전 / 상태코드 / 해설
Date: Sat, 19 Nov 2022 10:00:00 GMT <- Header 시작: 모든 부가 정보
Content-Length: 123 (HTTP 전송에 필요한 메타데이터)
Content-Type: text/html <- Header 끝
<- 공백 라인
<html> <- Message Body: 실제 전송할 데이터
... (JSON, HTML 문서, 이미지, 영상 등)
실제로는 11개이지만, 우리가 알아둘 것은 핵심 4개와, 보너스 1개 정도면 된다.
CRUD (Create, Post, Put, Delete)의 기능을 수행하는 HTTP 메서드가 핵심
CRUD | HTTP Methods | Description | Example |
---|---|---|---|
Create | POST | 등록 | 게시판 글쓰기 / 댓글 달기 / 새로운 주문 생성 |
Read | GET | 조회 | 게시판 글 읽어오기 (데이터 가져오기) |
Update | PUT | 데이터 덮어씌우기 | 게시글 수정 (데이터 전부 대체) |
Delete | DELETE | 삭제 | 게시물 삭제 |
이에 더해 PATCH도 알아두면 좋다.
각 응답 상태 코드를 모두 숙지하면 좋겠지만, 외워야 할 부분은 아니라고 생각하여 생략한다.
우리가 많이 접하는 건 200번대, 400번대, 500번대의 코드들이다.
Status Code | Class | Description |
---|---|---|
1xx (100번대) | Informational | 리퀘스트를 받아들여 처리 중 (거의 사용되지 않음) |
2xx (200번대) | Success | 리퀘스트를 정상적으로 처리함 |
3xx (300번대) | Redirection | 리퀘스트를 완료하기 위해서 추가 동작이 필요 |
4xx (400번대) | Client Error | 서버가 리퀘스트를 이해하지 못함 (요청 양식이 틀림) |
5xx (500번대) | Server Error | 서버가 리퀘스트 처리 실패 (서버 내부의 문제) |
{
"이름": "홍길동",
"나이": 55,
"성별": "남",
"주소": "서울특별시 양천구 목동",
"특기": ["검술", "코딩"],
"가족관계": {"#": 2, "아버지": "홍판서", "어머니": "춘섬"},
"회사": "경기 수원시 팔달구 우만동"
}
<users>
<user>
<name>John</name>
<age>22</age>
</user>
<user>
<name>Mary</name>
<age>21</age>
</user>
</users>
[
{
"name": "John",
"age": 22
},
{
"name": "Mary",
"age": 20
},
]
[https://(사이트](https://사이트) 주소)/movielists <- 상영중인 영화 목록 GET
[https://(사이트](https://사이트) 주소)/movielists?open=tomorrow <- 오픈이 내일인 영화 목록 GET
[https://(사이트](https://사이트) 주소)/movie-reservation <- 영화 예약을 POST
물론 위 예시에서 GET인지 POST인지는 명사형 네이밍만 보고는 확신할 수 없다.
하지만 API 문서를 보면 어떤 명령어가 어떤 기능을 하는지 알 수 있고, 그에 맞춰서 쓰면 된다.
https://www.youtube.com/watch?v=iOueE9AXDQQ
라는 것만 봐도,watch?v=iOueE9AXDQQ
라는 게 보인다!iOS 개발자로서는 몰라도 되겠지만 나중에 한번쯤 볼만할 것 같다.
앨런 Swift문법 마스터 스쿨 (온라인 BootCamp - 2개월과정) - 인프런 | 강의
REST API가 뭔가요?