이 글은 김영한님의 인프런 강의인 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 요약한 것입니다.
이미지, 정적 테스트 문서 등을 조회
주로 검색, 게시판 목록에서 (검색어를 활용한)정렬 필터 사용 시
HTML은 GET
, POST
만 지원한다.
<form action="/save" method="post">
<input type="text" name="username" />
<input type="text" name="age" />
<button type="submit">전송</button>
</form>
위의 html을 활용해 url로 요청하면 브라우저는 자동으로 HTTP 메시지를 아래와 생성한다.
POST /save HTTP/1.1
Host: localhost:3000
Content-Type: application/x-www-form-urlencodedusername=yeom&age=17
파일을 전송할 때는 binary 형식으로 데이터를 전송하는 multipart/form-data
을 사용한다. multipart/form-data
는 다른 종류의 여러 파일과 폼의 내용을 함께 전송이 가능하다.
<form action="/save" method="post" enctype="multipart/form-data">
<input type="text" name="username" />
<input type="text" name="age" />
<input type="file" name="file1" />
<button type="submit">전송</button>
</form>
위에서는 form
태그에 enctype
속성을 추가해 multipart/form-data
로 데이터를 보낼 것임을 명시하였다. 아래에서 boundary
는 파싱하는 경계를 의미한다.
POST /save HTTP/1.1
Host: localhost:3000
Content-Type: multipart/form-data; boundary=----XXX----XXX
Content-Disposition: form-data; name="username"yeom
----XXX
Content-Disposition: form-data; name="age"17
----XXX
Content-Disposition: form-data; name="file1"; filename="http.png"
Content-Type: image/pngsajldfkjaiwjasdjkdfjlkjlasjdkfjalsdf
----XXX
API 설계 - POST 기반 등록
GET
POST
GET
PATCH
, PUT
, POST
DELETE
POST 기반 등록의 경우 클라이언트는 등록될 리소스의 정확한 URI를 알지 못한다. 그래서 서버가 새로이 등록된 리소스의 URI를 생성해 응답해 준다.
HTTP/1.1 201 Created
Location: /members/100
컬렉션(Collection)?🧐
/members
이다.API 설계 - PUT 기반 등록
GET
GET
PUT
DELETE
POST
PUT 기반 등록의 경우 클라이언트가 리소스의 URI를 알고 있어야 한다. (예: PUT /files/star.jpg
)
스토어(Store)?🧐
/files
HTML FORM은 GET, POST만 지원. 따라서 컨트롤 URI
를 사용해야할 경우가 있음.
컨트럴 URI?🧐