์ธํฐ๋ท ํ๋กํ ์ฝ ๋ฐ ์ํคํ ์ฒ๋ฅผ ๊ฐ๋ฐํ๋ ์ธํฐ๋ท ์์ง๋์ด๋ง ํ์คํฌ ํฌ์ค(IETF)๋ HTTP QUERY ๋ฉ์๋๋ฅผ "์ ์ ํ์ค"์ผ๋ก ์ง์ ํ๊ณ ๊ด๋ จ ์ฌ์์ธ RFC 10008์ ๋ฐํํ์ต๋๋ค. QUERY ๋ฉ์๋๋ ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๋ฐฉ์์์ POST ๋ฉ์๋์ ์ ์ฌํ์ง๋ง, ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฑฐ๋ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ๋ณด๋ค๋ ์ฝ๊ธฐ ์์ฒญ์ ์์ฑํ๋ ๋ฐ ์ค์ ์ ๋๋ค๋ ์ ์์ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
์๋ก์ด ๋ฐฉ์์ ๋ชฉ์ ๋ฉด์์ GET ๋ฐฉ์๊ณผ ์ ์ฌํ๋ฉฐ, ์๋ฒ ์ํ๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ ์์ฒญ์ ๋ฐ๋ณตํ๊ฑฐ๋ ์ฌ์์ํ ์ ์๋๋ก ํฉ๋๋ค. POST ๋ฐฉ์๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก, QUERY ๋งค๊ฐ๋ณ์๋ URI๊ฐ ์๋ ์์ฒญ ๋ณธ๋ฌธ์ ๋ด์ ์ ๋ฌ๋ฉ๋๋ค. ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ํตํด GET ๋ฐฉ์์ ๋งค๊ฐ๋ณ์ ํฌ๊ธฐ ์ ํ(8000๋ฐ์ดํธ)์ ์ด๊ณผํ๋ ๋ง์ ์์ ๋งค๊ฐ๋ณ์๋ฅผ ์์ฒญ์ ํฌํจํ์ฌ ์ ์กํ ์ ์์ต๋๋ค.
GET /feed?q=foo&limit=10&sort=-published HTTP/1.1
ํธ์คํธ: example.org
์ฟผ๋ฆฌ /feed HTTP/1.1
ํธ์คํธ: example.org
์ฝํ
์ธ ์ ํ: application/x-www-form-urlencoded
q=foo&limit=10&sort=-published
QUERY ๋ฉ์๋๋ฅผ ํตํด ์ ์ก๋ ๋งค๊ฐ๋ณ์๋ ๋ก๊ทธ์ ๋ฐ์๋์ง ์์ต๋๋ค. ์๋ฒ์ด๋ ํํธ์ผ๋ก๋ ์์ฒญ ๋ถ์ ๋ฐ ๋ฌธ์ ์ง๋จ์ ๋ณต์กํ๊ฒ ๋ง๋ค์ง๋ง, ๋ค๋ฅธ ํํธ์ผ๋ก๋ ํ๋ก์ ์๋ฒ ๋ก๊ทธ์์ ๊ธฐ๋ฐ ๋ฐ์ดํฐ๋ฅผ ์จ๊ธธ ์ ์๊ฒ ํด์ค๋๋ค.
QUERY ๋ฉ์๋์ ์ ์ฉ ๋ถ์ผ ์ค ํ๋๋ก๋ JSON ๋๋ XML ํ์์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ๋ ์น API ๋๋ ์ฝํ ์ธ ๋ฅผ ์์ฑํ๋ ๋ฐฑ์๋์ ์์ฒญ์ ๋ณด๋ด๋ ๊ฒ์ด ์ธ๊ธ๋ฉ๋๋ค. ์๋ก์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ทผํ๋ ๊ฒ์ด ๊ฐ๋ฅํ์ง ์ฌ๋ถ๋ฅผ ํ๋จํ๊ธฐ ์ํด ์ฌ๊ธฐ๋ ์ฌ๋ ์ง์๋๋ ํ์์ ํ์ธํ๋ ค๋ฉด OPTIONS ๋ฉ์๋์ HEAD ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ต์
/์ฐ๋ฝ์ฒ HTTP/1.1
ํธ์คํธ: example.org
HTTP / 1.1 200 OK
ํ์ฉ ๋์: GET, QUERY, OPTIONS, HEAD
QUERY ๋ฉ์๋๋ ์บ์ฑ์ ์ง์ํฉ๋๋ค. ํ๋ก์ ์๋ฒ ๋๋ ํธ๋ค๋ฌ๋ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๊ณ , GET ๋ฉ์๋๋ฅผ ํตํ ํ์ ์ ๊ทผ์ ์ํด URI๋ฅผ ํ ๋นํ๋ฉฐ, "Last-Modified" ํค๋๋ฅผ ํตํด ์บ์๋ ๋ฒ์ ์ ๋ํ ์ ๋ณด๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค. "If-Modified-Since" ํค๋๋ ์ด์ ์์ฒญ ์ดํ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ธํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ์ฟผ๋ฆฌ ์คํ ์ต์ ์ ์ง์ ํ๋ ค๋ฉด ์๋ต์ "Content-Location" ๋ฐ "Location" ํค๋๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ์ ์๋ ์ด์ ์ ์คํ๋ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ๊ณตํ๊ณ , ํ์๋ ๋์ผํ ๋งค๊ฐ๋ณ์๋ก ์ฟผ๋ฆฌ๋ฅผ ๋ค์ ์คํํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.
> ์ฟผ๋ฆฌ /contacts HTTP/1.1
ํธ์คํธ: example.org
> ์ฝํ
์ธ ์ ํ: application/x-www-form-urlencoded
์๋ฝ: application/json
> select=surname,givenname,email&limit=10&match=%22email=*@example.*%22
HTTP / 1.1 200 OK
์ฝํ
์ธ ์ ํ : application / json
์ฝํ
์ธ ์์น: /contacts/stored-results/17
์์น: /contacts/stored-queries/42
์ต์ข
์์ ์ผ: 2012๋
8์ 25์ผ ํ ์์ผ 23:34:45 GMT
๋ ์ง: 2024๋
11์ 17์ผ ์ผ์์ผ 16์ 10๋ถ 24์ด GMT
> GET /contacts/stored-results/17 HTTP/1.1
ํธ์คํธ: example.org
์๋ฝ: application/json
"application/x-www-form-urlencoded" ํ์ ์ธ์๋ JSONPath(application/jsonpath), XSLT(application/xslt+xml), SQL(application/sql)๊ณผ ๊ฐ์ ํ์ฅ ํ์์ QUERY ์ฟผ๋ฆฌ์์ ๋งค๊ฐ๋ณ์๋ฅผ ์ ๋ฌํ๋ ๋ฐ ์ง์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ง์๋๋ ํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ฌ๊ธฐ๋ ์ฌ๋ Accept-Query ํค๋์ ์์ต๋๋ค.
> HEAD /contacts HTTP/1.1
ํธ์คํธ: example.org
HTTP / 1.1 200 OK
์ฝํ
์ธ ์ ํ: application/xhtml
Accept-Query: application/x-www-form-urlencoded, application/jsonpath, application/sql
> ์ฟผ๋ฆฌ /errata.json HTTP/1.1
ํธ์คํธ: example.org
> ์ฝํ
์ธ ์ ํ: application/jsonpath
์๋ฝ: application/json
>
> $..[
> ?@.errata_status_code==โ๊ฑฐ๋ถ๋จโ
> && @.submit_date>ยป2024โณ
> ]
> [ยซdoc-idยป]
์ถ์ฒ : opennet.ru
