HTTP ์ปจํ ์ธ ํ์
Content Negotiation์ด๋ ๋์ผํ URI์์ ๋ฆฌ์์ค์ ์๋ก ๋ค๋ฅธ ๋ฒ์ ์ ์ง์ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ฉ์ปค๋์ฆ์ด๋ค. ์ฌ์ฉ์ ์์ด์ ํธ๊ฐ ์ฌ์ฉ์์๊ฒ ์ ์ผ ์ ๋ง๋ ๊ฒ์ด ๋ฌด์์ธ์ง ๋ช ์ํ ์ ์๋ค.
์์น
ํด๋ผ์ด์ธํธ๋ ๋ฆฌ์์ค์ URL์ ์ฌ์ฉํด ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๋ค. ์๋ฒ๋ ๋ฆฌ์์ฌ๋ฅผ ์ ํํ๊ธฐ ์ํด ์ด๋ฐ URL์ ์ฌ์ฉํ๋ฉฐ ํด๋ผ์ด์ธํธ์๊ฒ ํด๋น ๋ฆฌ์์ค์ ํน์ ํ๋ ์ ํ ์ด์ (๋ฆฌ์์ค๊ฐ ์ ๊ณตํ๋ ๋ณํ)์ ๋ฆฌํดํ๋ค.
๋ฆฌ์์ค๊ฐ URL์ ํตํด ํธ์ถ๋์์ ๋ ํน์ ํ๋ ์ ํ ์ด์ ์ ์ ํํ๋ ๋ฐฉ๋ฒ์ Content Negotiation์ ์ํด ๊ฒฐ์ ๋๋ค. Content Negotiation์ ์๋ฒ ์ฃผ๋์ ํด๋ผ์ด์ธํธ ์ฃผ๋๋ก ๋๋์ด์ง๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ด๋ ํน์ HTTP ํค๋๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ (์๋ฒ ์ฃผ๋)
- ์ ๋ฌ๋ฐ์ 300, 406 ์ํ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ (์์ด์ ํธ ์ฃผ๋)
server-driven content negotiation
ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ด๋ ํน์ HTTP ํค๋๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ผ๋ก, ํน์ ์ข
๋ฅ์ ๋ฆฌ์์ค์ ๋ํ ํ์ค ํ์ ๋ฐฉ๋ฒ์ด๋ค. HTTP/1.1 ํ์ค์ ์๋ฒ ์ฃผ๋ ํ์์ ์์ํ๋ ํ์ค ํค๋ ๋ชฉ๋ก(Accept
, Accept-Charset
, Accept-Encoding
, Accept-Language
)์ ์ ์ํ๊ณ ์๋ค.
์๋ฒ ์ฃผ๋ Content Negotiation์ ๋ค์๊ณผ ๊ฐ์ ๋จ์ ์ด ์กด์ฌํ๋ค.
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์ํ์ ๋ํด ์๋ฒฝํ ์๊ณ ์์ง ์๊ธฐ ๋๋ฌธ์ ์๋ฒ๊ฐ ์ ํํ representation์ด ํด๋ผ์ด์ธํธ์๊ฒ ์ ํฉํ์ง ํ์ ํ ์ ์๋ค.
- ํด๋ผ์ด์ธํธ ํค๋์ ์๋ ์ ๋ณด๋ ์ฌ์ํ ์นจํด๊ฐ ๋ ์ ์๋ค.
- HTTP ํค๋ ์ ๋ณด๋ฅผ ๋ณด๊ณ ์๊ฒฉ ์ปดํจํฐ์ OS, ๋ฒ์ , ์ฌ์ฉ ์ค์ธ ํ๋กํ ์ฝ์ ์์๋ผ ์๋ ์๋ค.
- ์ฃผ์ด์ง ๋ฆฌ์์ค์ ๋ช ๊ฐ์ representation์ด ์ ์ก๋๋ฏ๋ก, ์ค๋๋ ์บ์๋ค์ ๋ ํจ์จ์ ์ด๊ณ ์๋ฒ ๊ตฌํ์ ์ข ๋ ๋ณต์กํด์ง๋ค.
์ค๋(shard): ๋จ์ผ์ ๋ฐ์ดํฐ๋ฅผ ์กฐ๊ฐ๋ด์ด ๋๋๋ ๊ฒ์ ๋งํ๋ค.
Accept
ํค๋
- ์์ด์ ํธ๊ฐ ์ฒ๋ฆฌํ๊ณ ์ ํ๋ ๋ฏธ๋์ด ๋ฆฌ์์ค์ ํ์ง ์ธ์์ ํจ๊ป MIME ํ์ ์ ๋์ดํ ํค๋
- ๋ค๋ฅธ MIME ํ์ ์ฌ์ด์ ์๋์ ์ธ ์ ํธ๋๋ฅผ ๋ํ๋ธ๋ค.
Accept-Charset
ํค๋
- ํด๋ผ์ด์ธํธ๊ฐ ์ดํดํ ์ ์๋ ๋ฌธ์ ์ธ์ฝ๋ฉ ํ์ ์ ๋ํ๋ธ๋ค.
์ ํต์ ์ผ๋ก ํด๋ผ์ด์ธํธ์ ์์น์ ๋ฐ๋ผ ์๋ก ๋ค๋ฅธ ๊ฐ์ ์ค์ ํ๊ธฐ ์ํด ์ฌ์ฉ๋์๋ค.
- ํ์ฌ๋ ๋๋ถ๋ถ์ ๋ธ๋ผ์ฐ์ ๋ค์ด
Accept-Charset
ํค๋๋ฅผ ์๋ตํ๊ณ ์๋ค.- UTF-8์ ๋ณดํธํ
- ๊ฐ์ธ์ ๋ณด์ ๋ณดํธ(ํด๋ผ์ด์ธํธ์ ์ ๋ณด๋ฅผ ์ต๋ํ ๋ ๋ ธ์ถ์ํค๊ธฐ ์ํด)
Accept-Encoding
ํค๋
- ํด๋ผ์ด์ธํธ๊ฐ ์์ฉํ ์ ์๋ HTTP ์์ถ ๋ฐฉ์์ ๋ํ๋ธ๋ค.
- q์ธ์๋ฅผ ์ฌ์ฉํด ์์ถ ๋ฐฉ์ ๊ฐ ์ฐ์ ์์๋ฅผ ๋ํ๋ธ๋ค.
- ๊ธฐ๋ณธ๊ฐ
identity
๋ ๊ฐ์ฅ ๋ฎ์ ์ฐ์ ์์์ด๋ค.
- ๊ธฐ๋ณธ๊ฐ
- ์ ์ก๋๋ ๋์ญํญ์ ์ ์ฝํ ์ ์๋ ์ข์ ๋ฐฉ๋ฒ์ผ๋ก, ๋ธ๋ผ์ฐ์ ๋ ํ์์ ์ผ๋ก ์ด ํค๋๋ฅผ ํฌํจ์์ผ ์์ฒญํ๋ค. ์๋ฒ๋ ์ด์ ๋ฐ๋ผ ์์ถ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์์ด์ผ ํ๋ค.
Accept-Language
ํค๋
- ํด๋ผ์ด์ธํธ๊ฐ ์ ํธํ๋ ์ธ์ด ๋ชฉ๋ก์ ๋ํ๋ธ๋ค.
- q์ธ์๋ก ์ธ์ด ๊ฐ ์ ํธ ์ฐ์ ์์๋ฅผ ๋ํ๋ธ๋ค.
- ๋ธ๋ผ์ฐ์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์ธ์ด ์ค์ ๊ฐ์ ์ด์ฉํด Accept Language ๊ฐ์ ๋ณด๋ธ๋ค.
- ๊ทธ๋ฌ๋ ์ฌ์ฉ์์ ์ค์ ์๊ตฌ์ ์ด ๊ฐ์ ๋ถ์ผ์นํ ์๋ ์๋ค.
- ๋ฐ๋ผ์ ์ฌ์ดํธ์ ์ธ์ด ๋ฉ๋ด๋ฅผ ์ ๊ณตํ๋ ๋ฑ ์ด์ ๋๋นํ ํ์๊ฐ ์๋ค.
User-Agent
ํค๋
- ์์ฒญ์ ์ ์กํ๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ํ๋ธ๋ค.
- product tokens์ comments๊ฐ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ ๋ฌธ์์ด์ด๋ค.
- product token:
๋ธ๋ผ์ฐ์ /๋ฒ์
- comment: ๊ดํธ ์์ ์ ํ ์์ผ๋ฉฐ ํด๋น ๋ธ๋ผ์ฐ์ ๊ฐ ์ํ ํธ์คํธ์ OS ๋ฑ ์ ๋ณด๊ฐ ๋ค์ด์๋ค.
- ์ด ํค๋์ ์์งํด ๋ธ๋ผ์ฐ์ ๋ง๋ค ์น ํ์ด์ง ๋ฐ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ์ข์ง ์๋ค. ์น์ ์ฌ์ฉ์๊ฐ ์ด๋ค ๋ธ๋ผ์ฐ์ ๋ ๋๋ฐ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ์ง์ ๊ฐ์์น ์๊ณ ๋ชจ๋์๊ฒ ์ ๊ทผ์ด ์ฉ์ดํด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
Vary
์๋ต ํค๋
Accept-*
ํค๋์ ๋ฌ๋ฆฌ ์น ์๋ฒ ์๋ต ํค๋์ด๋ค.์๋ฒ ์ฃผ๋ ์ปจํ ์ธ ํ์์ ๊ณผ์ ์ค์ ์๋ฒ์ ์ํด ์ฌ์ฉ๋๋ ํค๋๋ค์ ๋ชฉ๋ก์ ๋ํ๋ธ๋ค.
- ์ฆ ํด๋ผ์ด์ธํธ๊ฐ ์ ์ํ ์ฌ๋ฌ representation ์ค์์ ์๋ฒ๊ฐ ์ ํํ ํค๋๊ฐ ๋ฌด์์ธ์ง ์๋ ค์ค๋ค.
- ์บ์๋ ์๋ต์ ์ฌ์ฉํ ์ ์๋ ์ง ๊ฒฐ์ ํ๋ ๋ฐ ์ฌ์ฉํ๋ค.
Vary: <header-name>, <header-name>
agent-driven content negotiation
- server-driven content negotiation ๋จ์
- ํด๋ผ์ด์ธํธ๊ฐ ์ ํํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ค ํ๋ฉด ๋ ๋ง์ ํค๋๊ฐ ํ์ํ๋ค.
- ๋ ๋ง์ ํค๋๋ ๋์ญํญ์ ์ฆ๊ฐ์ ๊ฐ์ธ์ ๋ณด ๋ ธ์ถ์ ์ผ๊ธฐํ๋ค.
- ์ด์ HTTP๋ agent-driven content negotiation์ ์ง์ํ๋ค.
- ์๋ฒ๊ฐ ์ ๋งคํ representation ์กฐ๊ฑด์ ๋ง์ฃผํ์ ๋, ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฆฌ์์ค๋ค์ URL๋ฅผ ํฌํจํ ํ์ด์ง(300 multiple choices)๋ฅผ ๋ฆฌํดํ๊ณ , ์ด์ ์ฌ์ฉ์๋ ์ฌ์ฉํ๊ณ ์ ํ๋ ๋ฆฌ์์ค๋ฅผ ์ ํํ๋ค.
์์ด์ ํธ ์ฃผ๋ ํ์์ ๋ฌธ์ ์
HTTP ํ์ค์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฆฌ์์ค ์ค์์ ์ ํํ๋๋ก ํ์ฉํ๋ ํ์ด์ง์ ํ์์ ๋ช ์ํ์ง ์๊ณ ์๋ค.
์ค์ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ ธ์ค๋๋ฐ ํ ๊ฐ ์ด์์ ์์ฒญ์ด ํ์ํด ๋ฆฌ์์ค ํจ์ฉ์ฑ์ด ๋จ์ด์ง๋ค.