Set-Cookie : 서버에서 클라이언트로 쿠키 전달

Cookie : 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청시 서버로 전달 


예를들어 웹 브라우저에서 GET /welcome 으로 들어온다면

서버에서 HTTP/1.1 200 OK 로 응답한다.  (안녕하세요 손님)

 

만약에 사용자가 로그인을 한다면 ?

서버에서 로그인을 했다고 응답을 준다.        (안녕하세요 xxx님)

 

이때 로그인 이후 welcome 페이지에 접근한다면 (안녕하세요 손님)

이라는 문구를 보게된다. 서버입장에서는 로그인된 사용자인지 아닌지

알 수 없다.

 

HTTP는 무상태 프로토콜이기 때문에

클라이언트와 서버가 요청과 응답을 주고 받으면 연결이 끊어진다.

다시 요청 시 이전요청을 기억하지 못한다.

 

대안으로는 모든 요청과 링크에 사용자 정보를 포함하여 보내게 되면

해결 가능하지만 많은 문제가 생길 수 있다.

- 모든 요청에 사용자 정보가 포함되도록 개발 해야한다.

- 브라우저를 완전히 종료하고 다시 열때 문제가 생긴다.

 

이러한 문제때문에 쿠키라는 개념이 도입된다.

 

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/lecture/61382?tab=note&volume=1.00&speed=0.75

서버는 Set-Cookie 데이터를 쿠키 헤더를 만들어서 응답을 한다. 

이때 웹 브라우저에서 쿠키 저장소에 데이터를 저장해둔다.

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/lecture/61382?tab=note&volume=1.00&speed=0.75

로그인 이후 사용자가 welcome 으로 요청한다면

자동으로 웹 브라우저는 요청을 보낼때마다 쿠키를 무조건 뒤져서 

쿠키값을 서버에 보낸다 이때 서버는 유저가 누군지 알 수 있다.


사용처

- 사용자 로그인 세션 관리

- 광고 정보 트래킹

 

쿠키 정보는 항상 서버에 전송됨

- 네트워크 트래픽 추가 유발

- 최소한의 정보만 사용

- 서버에 전송하지 않고, 웹 브라우저 내부에 데이터를 저장하고 싶으면 웹 스토리지를 공부해보자


쿠키 - 생명 주기

 

Set-Cookie : expires = Sat, 26-Dec-2020 04:39:21 GMT

- 만료일이 되면 쿠키 삭제된다.

 

Set-Cookie : max-age=3600

- 초단위로 세팅할 수 있다.

 

세션 쿠키 : 만료 날짜를 생략하면 브라우저 종료시 까지만 유지

 

영속 쿠키 : 만료 날짜를 입력하면 해당 날짜까지 유지


쿠키 - 도메인

 

명시 : 명시한 문서 기준 도메인 + 서브 도메인 포함

- domain=example.org를 지정해서 쿠키 생성

    - example.org는 물론이고

    - dev.example.com도 쿠키 접근

 

생략 : 현재 문서 기준 도메인만 적용

- example.org에서 쿠키를 생성하고 domain 지정을 생략

    - example.org 에서만 쿠키 접근

    - dev.example.org는 쿠키 미접근


쿠키 - 경로

 

이 경로를 포함한 하위 경로 페이지만 쿠키 접근

일반적으로 path=/ 루트로 지정

예)

path=/home 지정

/home -> 가능

/home/level 1 -> 가능

/hello -> 불가능


쿠키 - 보안

 

Secure

- 쿠키는 http,https를 구분하지 않고 전송

- Secure를 적용하면 https인 경우에만 전송

 

HttpOnly

- XSS 공격 방지

- 자바스크립트에서 접근 불가

- HTTP 전송에만 사용

 

SameSite

- XSRF 공격 방지

- 요청 도메인과 쿠키에 설정된 도메인이 같은 경우만 쿠키 전송

'웹프로그래밍 > 웹 기본 지식' 카테고리의 다른 글

33. 검증 헤더와 조건부 요청1  (0) 2022.03.09
32. HTTP 헤더2 캐시와 조건부 요청  (0) 2022.03.09
30. 인증  (0) 2022.01.12
29. 특별한 정보  (0) 2022.01.12
28. 일반 정보  (0) 2022.01.12

인증 

Authorization : 클라이언트 인증 정보를 서버에 전달

WWW-Authenticate : 리소스 접근시 필요한 인증 방법 정의


Authorization

클라이언트 인증 정보를 서버에 전달

- authorization : Basic xxxxxxxxxx


WWW-Authenticate

리소스 접근시 필요한 인증 방법 정의

- 401 Unanthorized 응답과 함께 사용 

인증을 하려면 어떤 정보를 가지고 인증할 수 있게 만들어라고 필요한 정보 목록을 반환하게 된다.

 

'웹프로그래밍 > 웹 기본 지식' 카테고리의 다른 글

32. HTTP 헤더2 캐시와 조건부 요청  (0) 2022.03.09
31. 쿠키  (0) 2022.03.08
29. 특별한 정보  (0) 2022.01.12
28. 일반 정보  (0) 2022.01.12
27. 전송 방식  (0) 2022.01.12

특별한 정보

 

Host : 요청한 호스트 정보(도메인)

Location : 페이지 리다이렉션

Allow : 허용 가능한 HTTP 메서드

Retry-After : 유저 에어전트가 다음 요청을 하기까지 기다려야 하는 시간


Host

요청한 호스트 정보(도메인)

- 요청에서 사용

- 필수

- 하나의 서버가 여러 도메인을 처리해야 할 때

- 하나의 IP 주소에 여러 도메인이 적용되어 있을 때

 

가상호스트를 통해 여러 도메인을 한번에 처리할 수 있는 서버

실제 애플리케이션이 여러개 구동될 수 있다.

 

IP로만 통신하기 때문에 어떤 도메인인지 판단할 수 없기 때문에 사용


Location

페이지 리다이렉션

- 웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동

- 응답코드 3xx에서 설명

- 201 (Created) : Location 값은 요청에 의해 생성된 리소스 URI를 뜻함

- 3xx (Redirection) : Location 값은 요청을 자동으로 리다이렉션하기 위한 대상 리소스를 가리킴


Allow

허용 가능한 HTTP 메서드

- 405 에서 응답에 포함해야함

- 경로는 있는데 예를들어 GET, HEAD, PUT 만 제공하고 POST를 제공하지 않을 때

  GET, HEAD, PUT만 지원한다고 알림


Retry-After

유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간

- 503 : 서비스가 언제까지 불능인지 알려줄 수 있음

- Retry-Afrer : Fri, 31 Dec 1999 23:59:59 GMT(날짜 표기)

- Retry-After : 120 (초단위 표기)

'웹프로그래밍 > 웹 기본 지식' 카테고리의 다른 글

31. 쿠키  (0) 2022.03.08
30. 인증  (0) 2022.01.12
28. 일반 정보  (0) 2022.01.12
27. 전송 방식  (0) 2022.01.12
26. 콘텐츠 협상  (0) 2022.01.12

From : 유저 에이전트의 이메일 정보

Referer : 이전 웹 페이지 주소

User-Agent : 유저 에이전트 애플리케이션 정보

Server : 요청을 처리하는 오리진 서버의 소프트웨어 정보

Date : 메시지가 생성된 날짜


From 

유저 에이전트의 이메일 정보

- 일반적으로 잘 사용되지 않음

- 검색 엔지 같은 곳에서, 주로 사용

- 요청에서 사용


Referer

이전 웹 페이지 주소

- 현재 요청된 페이지의 이전 웹 페이지 주소

- A -> B로 이동하는 경우 B를 요청할 때 Referer : A를 포함해서 요청

- Referer를 사용해서 유입 경로 분석 가능 

- 요청에서 사용 


User-Agent

유저 에이전트 애플리케이션 정보

- 클라이언트의 애플리케이션 정보(웹 브라우저 정보)

- 통계 정보

- 어떤 종류의 브라우저에서 장애가 발생하는지 파악 가능

- 요청에서 사용


Server

요청을 처리하는 ORIGIN 서버의 소프트웨어 정보

- Server : Apache/2.2.22(Debian)

- server : nginx

- 응답에서 사용


Date

메시지가 발생한 날짜와 시간

- 응답에서 사용

'웹프로그래밍 > 웹 기본 지식' 카테고리의 다른 글

30. 인증  (0) 2022.01.12
29. 특별한 정보  (0) 2022.01.12
27. 전송 방식  (0) 2022.01.12
26. 콘텐츠 협상  (0) 2022.01.12
25. 표현  (0) 2022.01.12

전송 방식 설명

 

- 단순 전송

- 압축 전송

- 분할 전송

- 범위 전송

 

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/lecture/61378?volume=1.00&speed=0.75&tab=note&quality=auto&mm=close

메시지 바디에 대한 컨텐트의 길이를 알 수 있을때 쓰는 방식이다.


https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/lecture/61378?volume=1.00&speed=0.75&tab=note&quality=auto&mm=close

압축하고 Content-Encoding 필드에 값을 넣어줘야 한다 그래야만 클라이언트가 압축을 풀 수 있다.


 

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/lecture/61378?volume=1.00&speed=0.75&tab=note&quality=auto&mm=close

Transfer-Encoding : chunked 라고 하면 나눠서 보내게 된다.

5바이트 씩 먼저 받아볼 수 있다.

끝이라는 의미도 따로 표현해야한다. 용량이 큰 데이터를 한번에 보내게되면 기다려야하기 때문에

이 방법을 쓴다.

이때는 Content-Length를 보내면 안된다.


https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/lecture/61378?volume=1.00&speed=0.75&tab=note&quality=auto&mm=close

예를들어 이미지를 받는데 중간에 절반정도 받았다고 치고 끊겨버렸다.

그때 처음부터 받으면 비효율적이라 내가 받은 범위 다음부터 보내달라고 요청할 수 있다.

'웹프로그래밍 > 웹 기본 지식' 카테고리의 다른 글

29. 특별한 정보  (0) 2022.01.12
28. 일반 정보  (0) 2022.01.12
26. 콘텐츠 협상  (0) 2022.01.12
25. 표현  (0) 2022.01.12
24. HTTP 헤더 개요  (0) 2022.01.12

협상(콘첸츠 네고시에이션)

클라이언트가 선호하는 표현 요청

 

Accept : 클라이언트가 선호하는 미디어 타입 전달

Accept-Charset : 클라이언트가 선호하는 문자 인코딩

Accept-Encoding : 클라이언트가 선호하는 압축 인코딩

Accept-Language : 클라이언트가 선호하는 자연 언어

 

협상 헤더는 요청시에만 사용 

 

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/lecture/61377?volume=1.00&speed=0.75&tab=note&quality=auto&mm=close

한국어 브라우저를 사용한다고 가정하고

외국 이벤트 사이트에 접속한다. (다중언어를 지원하는 서버 언어 /  언어우선순위 1 : 영어) 

 

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/lecture/61377?volume=1.00&speed=0.75&tab=note&quality=auto&mm=close

클라이언트가 서버에 요청할때 Accept-Language : ko 라고 보낸다면

기본언어가 영어라도 한국어를 지원하기 때문에 Content-Language에 ko로 한국어로 응답한다.

 

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/lecture/61377?volume=1.00&speed=0.75&tab=note&quality=auto&mm=close

복잡한 경우일때이다. 

다중 언어 지원 서버지만 기본이 독일어이다. 영어는 어떻게든 읽을 수 있는데 독일어는 전혀 모르기 때문에

영어를 원하는 상황이지만 독일어로 응답한다. 이런 경우를 위해 우선순위라는 것이 필요하다.


협상과 우선순위1

Quality Values(q)

 

- Quality Values(q) 값 사용

- 0~1, 클수록 높은 우선순위

- 생략하면 1

- Accept-Language : ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7

  1. ko-KR;q=1(생략)

  2. ko;q=0.9

  3. en-US;q=0.8

  4. en;q=0.7


협상과 우선순위2

Quality Values(q)

 

- 구체적인 것이 우선이다.

- Accept: text/*, text/plain, text/plain;format=flowed, */*

  1. text/plain;format=flowed

  2. text/plain

  3. text/*

   4. */*


협상과 우선순위3

Quality Values(q)

 

- 구체적인 것을 기준으로 미디어 타입을 맞춘다.

- Accept : text/*q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5

 

 

'웹프로그래밍 > 웹 기본 지식' 카테고리의 다른 글

28. 일반 정보  (0) 2022.01.12
27. 전송 방식  (0) 2022.01.12
25. 표현  (0) 2022.01.12
24. HTTP 헤더 개요  (0) 2022.01.12
23. 4xx - 클라이언트 오류 / 5xx - 서버 오류  (0) 2022.01.12

표현 

 

Content-Type : 표현 데이터의 형식

Content-Encoding : 표현 데이터의 압축 방식

Content-Language : 표현 데이터의 자연 언어

Content-Length : 표현 데이터의 길이 (명확하게 쪼개면 페이로드 헤더라고 해야함)

표현 헤더는 전송, 응답 둘다 사용


Content-Type

표현 데이터의 형식 설명

 

- 미디어 타입, 문자 인코딩

- 예) text/html; charset=utf-8

       application/json

       image/png


Content-Encoding

표현 데이터 인코딩

 

- 표현 데이터를 압축하기 위해 사용

- 데이터를 전달하는 곳에서 압축 후 인코딩 헤더 추가

- 데이터를 읽는 쪽에서 인코딩 헤더의 정보로 압축 해제

- 예) gzip, deflate, identity


Content-Language

표현 데이터의 자연 언어

 

- 표현 데이터의 자연 언어를 표현

- 예) ko, en, en-US


Content-Length

표현 데이터의 길이

 

- 바이트 단위

- Transfer-Encoding(전송 코딩)을 사용하면 Content-Length를 사용하면 안됨

'웹프로그래밍 > 웹 기본 지식' 카테고리의 다른 글

27. 전송 방식  (0) 2022.01.12
26. 콘텐츠 협상  (0) 2022.01.12
24. HTTP 헤더 개요  (0) 2022.01.12
23. 4xx - 클라이언트 오류 / 5xx - 서버 오류  (0) 2022.01.12
22. 3xx - 리다이렉션2  (0) 2022.01.12

header-filed =

field-name ":" OWS field-value OWS (OWS:띄어쓰기 허용)

field-name은 대소문자 구문 없음

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/lecture/61374?volume=1.00&speed=0.75&tab=note&quality=auto&mm=close


HTTP 헤더

용도 

-HTTP 전송에 필요한 모든 부가정보

  예) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보

-표준 헤더가 너무 많음

-필요시 임의의 해더 추가 가능


HTTP 헤더

분류 - RFC2616(과거)

- General 헤더 : 메시지 전체에 적용되는 정보

- Request 헤더 : 요청 정보

- Response 헤더 : 응답 정보

- Entity 헤더 : 엔티티 바디 정보 (메시지 바디와 관련된 정보)


HTTP BODY

message body - RFC2616(과거)

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/lecture/61374?volume=1.00&speed=0.75&tab=note&quality=auto&mm=close

- 메시지 본문은 엔티티 본문을 전달하는데 사용

- 엔티티 본문은 요청이나 응답에서 전달할 실제 데이터

- 엔티티 헤더는 엔티티 본문의 데이터를 해석할 수 있는 정보 제공


->

스펙이 바뀜 2014년 RFC7230~7235 등장

 

RFC723x 변화

- 엔티티 -> 표현

- 표현 = 표현 메타데이터 + 표현 데이터


HTTP BODY

message body - RFC7230(최신)

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/lecture/61374?volume=1.00&speed=0.75&tab=note&quality=auto&mm=close

 

- 메시지 본문을 통해 표현 데이터 전달

- 메시지 본문 = 페이로드

- 표현은 요청이나 응답에서 전달할 실제 데이터

- 표현 헤더는 표현 데이터를 해석할 수 있는 정보 제공

'웹프로그래밍 > 웹 기본 지식' 카테고리의 다른 글

26. 콘텐츠 협상  (0) 2022.01.12
25. 표현  (0) 2022.01.12
23. 4xx - 클라이언트 오류 / 5xx - 서버 오류  (0) 2022.01.12
22. 3xx - 리다이렉션2  (0) 2022.01.12
21. 3xx - 리다이렉션  (0) 2022.01.11

4xx(Client Error)

클라이언트 오류 

 

- 클라이언트의 요청에 잘못된 문법등으로 서버가 요청을 수행할 수 없음

- 오류의 원인이 클라이언트에 있음

- 중요! 클라이언트가 이미 잘못된 요청, 데이터를 보내고 있기 때문에, 똑같은 재시도가 실패함

 

400 Bad Request

클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없음

- 요청 구문, 메시지 등등 오류

- 클라이언트는 요청 내용을 다시 검토하고, 보내야함

예) 요청 파라미터가 잘못되거나, API 스펙이 맞지 않을때

 

401 Unauthorized

클라이언트가 해당 리소스에 대한 인증이 필요함

- 인증 되지 않음

- 401 오류 발생시 응답에 WWW-Authenticate 헤더와 함께 인증 방법을 설명

 

403 Forbidden

서버가 요청을 이해했지만 승인을 거부함

- 주로 인증 자격 증명은 있지만, 접근 권한이 불충분한 경우

- 어드민 등급이 아닌 사용자가 로그인은 했지만, 어드민 등급의 리소스에 접근하는 경우

 

404 Not Found

요청 리소스를 찾을 수 없음

- 요청 리소스가 서버에 없음

- 또는 클라이언트가 권한이 부족한 리소스에 접근할 때 해당 리소스를 숨기고 싶을 때


5xx (Server Error)

서버 오류

 

- 서버 문제로 오류 발생

- 서버에 문제가 있기 때문에 재시도 하면 성공할 수도 있음(복구가 되거나 등등)

 

500 Internal Server Error 

서버 문제로 오류 발생, 애매하면 500 오류

- 서버 내부 문제로 오류 발생

- 애매하면 500 오류

 

503 Service Unavailable

서비스 이용 불가

- 서버가 일시적인 과부하 또는 예정된 작업으로 잠시 요청을 처리할 수 없음

- Retry-After 헤더 필드로 얼마뒤에 복구되는지 보낼 수도 있음

 

 

 

 

'웹프로그래밍 > 웹 기본 지식' 카테고리의 다른 글

25. 표현  (0) 2022.01.12
24. HTTP 헤더 개요  (0) 2022.01.12
22. 3xx - 리다이렉션2  (0) 2022.01.12
21. 3xx - 리다이렉션  (0) 2022.01.11
20. 2xx - 성공  (0) 2022.01.11

일시적인 리다이렉션

302, 307, 303 

-리소스의 URI가 일시적으로 변경

-따라서 검색 엔진 등에서 URL을 변경하면 안됨

 

302 Found

 -리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음

 

307 Temporary Redirect

 -302와 기능은 같음

 -리다이렉트시 요청 메서드와 본문 유지

 

303 See Other

 -302와 기능은 같음

 -리다이렉트시 요청 메서드가 GET으로 변경


PRG: Post/Redirect/Get

일시적인 리다이렉션 - 예시

- POST로 주문 후에 웹 브라우저를 새로고침하면?

- 새로고침은 다시 요청

- 중복 주문이 될 수 있다.

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/lecture/61780?volume=1.00&speed=0.75&tab=note&quality=auto&mm=close

/order 폼에다가 데이터를 입력후 POST 메서드로 전송한다. 

서버는 주문데이터를 저장하고 200 OK 보낸다.

혹시 새로고침을 누르게 되면 또다시 서버는 주문 데이터를 저장하게된다.

주문완료 200 OK를 보낸다. 새로고침을 할 때마다 주문을 여러개 하게 된다.

 

이러한 문제를 해결하기 위해서 PRG를 사용한다.

 

PRG: Post/Redirect/Get

일시적인 리다이렉션 - 예시

 - POST로 주문후에 새로 고침으로 인한 중복 주문 방지

 - POST로 주문후에 주문 결과 화면을 GET 메서드로 리다이렉트

 - 새로고침해도 결과 화면을 GET으로 조회

 - 중복 주문 대신에 결과 화면만 GET으로 다시 요청

 

 

 

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/lecture/61780?volume=1.00&speed=0.75&tab=note&quality=auto&mm=close

POST 메서드로 폼에 데이터를 넣고 요청을함

데이터베이스에 상품이 쌓인다.

이때 응답을 302 Found와 Location 정보를 준다. /order-result/19

클라이언트는 302코드를 보고 리다이렉트를한다. GET메서드 사용

서버는 주문 결과를 보내고 (200 OK)

이렇게되면 새로고침을 아무리한다고 해도 GET메서드 덕분에 다시 결과를 보게된다.

 

PRG 이후 리다이렉트

 - URL이 이미 POST -> GET으로 리다이렉트 됨

 - 새로고침해도 GET으로 결과 화면만 조회


그래서 뭘 써야할까?

302, 307, 303

 

정리

302 Found -> GET으로 변할 수 있음

307 Temporary Redirect -> 메서드가 변하면 안됨

303 See Other ->메서드가 GET으로 변경

 

역사

 - 처음 302 스펙의 의도는 HTTP 메서드를 유지하는 것

 - 그런데 웹 브라우저들이 대부분 GET으로 바꾸어버림

 - 그래서 모호한 302를 대신하는 명확한 307, 303이 등장

 

현실

 - 307, 303을 권장하지만 현실적으로 이미 많은 애플리케이션 라이브러리들이 302를 기본값으로 사용

 - 자동 리다이렉션시에 GET으로 변해도 되면 302를 사용해도 큰 문제 없음


기타 리다이렉션

300, 304

 

300 Multiple Choices : 안쓴다.

304 Not Modified

 - 캐시를 목적으로 사용

 - 클라이언트에게 리소스가 수정되지 않았음을 알려준다. 따라서 클라이언트는 로컬PC에 저장된 캐시를 재사용한다.

 - 304 응답은 응답에 메시지 바디를 포함하면 안된다.

 - 조건부 GET, HEAD 요청시 사용 

'웹프로그래밍 > 웹 기본 지식' 카테고리의 다른 글

24. HTTP 헤더 개요  (0) 2022.01.12
23. 4xx - 클라이언트 오류 / 5xx - 서버 오류  (0) 2022.01.12
21. 3xx - 리다이렉션  (0) 2022.01.11
20. 2xx - 성공  (0) 2022.01.11
18. HTTP API 설계 예시  (0) 2022.01.10

+ Recent posts