제가 나중에 보기 위해 정리해놓은 자료이므로 틀린 내용이 있을 수 있습니다. 댓글로 피드백 주시면 바로 수정하겠습니다. 감사합니다. ☺️ - 민쏜 -
클라이언트와 서버는 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가 뭔가요?