1๋ถ: REST๋ ๋ฌด์์
๋๊น? ์ด ๋ถ๋ถ์์๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ํต์ ์ด ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๋์ง ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๊ทธ ๊ณผ์ ์์ ์ฐ๋ฆฌ๋ ์๋ก์ด ์ฉ์ด๋ฅผ ๊ณต๊ฐํ๊ณ ์ด์ ๋ํ ์ค๋ช
์ ์ ๊ณตํ ๊ฒ์
๋๋ค. ๋ชจ๋ ๊ฒ์ ๋ช
ํํ๊ฒ ํ๊ธฐ ์ํด ์ผ๋ถ RESTful ์ ํ๋ฆฌ์ผ์ด์
์ ์๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ-์๋ฒ ํต์ ์ ๋ถ์ํ๊ฒ ์ต๋๋ค. ๊ณ ๊ฐ๊ณผ ๊ณ ๊ฐ์ ์ฃผ๋ฌธ์ ๋ํ ์ ๋ณด๋ฅผ ์ ์ฅํ ์ ์๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ ๊ฒ๋ค. ์ฐ๋ฆฌ ์์คํ
์ ์ผ๋ถ ์ํฐํฐ๋ฅผ ์กฐ์ํ ์ ์์ต๋๋ค. ์ฆ, ์์ฑ, ํธ์ง, ์ญ์ ๋ฐ ์ด์ ๋ํ ์ ๋ณด ์ ๊ณต์ด ๊ฐ๋ฅํฉ๋๋ค. ์ด๋ฌํ ์ํฐํฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํด๋ผ์ด์ธํธ - ํด๋ผ์ด์ธํธ;
- ์ฃผ๋ฌธ - ๊ณ ๊ฐ ์ฃผ๋ฌธ;
- ํ๋ชฉ-์ํ.
์์ฒญ์ฌํญ
ํด๋ผ์ด์ธํธ ์์ฒญ์ ๊ฑฐ์ ํญ์ HTTP๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๋๋ค. ์ผ๋ฐ์ ์ผ๋ก HTTP ์์ฒญ์ ์ฌ๋ฌ ๊ตฌ์ฑ ์์๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.- HTTP ๋ฐฉ์;
- ์ ๋ชฉ;
- URI;
- ์์ฒญ ๋ณธ๋ฌธ.
URI ๋ฐ ๋ฆฌ์์ค
ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ํตํด ์ป๊ฑฐ๋ ์์ ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฆฌ์์ค๋ผ๊ณ ํฉ๋๋ค. ํด๋ผ์ด์ธํธ-์๋ฒ ์ํธ ์์ฉ์ ๊ธฐ๋ณธ์ ๋ฆฌ์์ค ์กฐ์์ ๋๋ค. REST์ ๋ฆฌ์์ค๋ ์ด๋ฆ์ ์ง์ ํ ์ ์๋ ๋ชจ๋ ๊ฒ์ ๋๋ค. ์ด๋ค ์๋ฏธ์์ ์ด๋ Java์ ํด๋์ค์ ๊ฐ์ต๋๋ค. Java์์๋ ๋ฌด์์ด๋ ํด๋์ค๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. REST์์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ๋ฆฌ์์ค๋ ์ฌ์ฉ์, ๋ฌธ์, ๋ณด๊ณ ์, ์ฃผ๋ฌธ ๋ฑ ๋ฌด์์ด๋ ๋ ์ ์์ต๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ ์ผ๋ถ ์ํฐํฐ์ ์ถ์ํ์ผ ์๋ ์๊ณ ๊ทธ๋ฆผ, ๋น๋์ค, ์ ๋๋ฉ์ด์ , PDF ํ์ผ๊ณผ ๊ฐ์ ํ์ผ๊ณผ ๊ฐ์ ๊ตฌ์ฒด์ ์ธ ๊ฒ์ผ ์๋ ์์ต๋๋ค. ์ด ์์๋ ๋ค์๊ณผ ๊ฐ์ 3๊ฐ์ง ๋ฆฌ์์ค๊ฐ ์์ต๋๋ค.- ํด๋ผ์ด์ธํธ - ํด๋ผ์ด์ธํธ;
- ์ฃผ๋ฌธ - ๊ณ ๊ฐ ์ฃผ๋ฌธ;
- ํ๋ชฉ-์ํ.
- /clients - ๋ชจ๋ ๊ธฐ์กด ํด๋ผ์ด์ธํธ์ URI์ ๋๋ค.
- /clients/23 - ํน์ ํด๋ผ์ด์ธํธ์ URI, ์ฆ ID=23์ธ ํด๋ผ์ด์ธํธ์ ๋๋ค.
- /clients/4 - ํน์ ํด๋ผ์ด์ธํธ์ URI, ์ฆ ID=4์ธ ํด๋ผ์ด์ธํธ์ ๋๋ค.
- /clients/4/orders โ ํด๋ผ์ด์ธํธ ๋ฒํธ 4์ ๋ชจ๋ ์ฃผ๋ฌธ์ ๋ํ URI;
- /clients/1/orders/12 - ํด๋ผ์ด์ธํธ ๋ฒํธ 1์ ์ฃผ๋ฌธ ๋ฒํธ 12์ URI์ ๋๋ค.
- /clients/1/orders/12/items โ ํด๋ผ์ด์ธํธ 1๋ฒ์ด ์ฃผ๋ฌธํ 12๋ฒ์ ๋ชจ๋ ์ ํ ๋ชฉ๋ก์ URI์ ๋๋ค.
HTTP ๋ฐฉ์
HTTP ๋ฐฉ๋ฒ(์์ด HTTP ๋ฐฉ๋ฒ)์ ๋ฆฌ์์ค์ ๋ํ ์ฃผ์ ์์ ์ ๋ํ๋ด๋ ์ปจํธ๋กค ๋ฐ ๊ตฌ๋ถ ๊ธฐํธ๋ฅผ ์ ์ธํ ๋ชจ๋ ๋ฌธ์์ ์ํ์ค์ ๋๋ค. ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ HTTP ๋ฉ์๋๊ฐ ์์ต๋๋ค. RESTful ์๋น์ค์์ ๊ฐ์ฅ ์์ฃผ ์ฌ์ฉ๋๋ ํญ๋ชฉ์ ๋์ดํฉ๋๋ค.- GET - ํน์ ๋ฆฌ์์ค(ID๋ฅผ ํตํด) ๋๋ ๋ฆฌ์์ค ๋ชจ์์ ๋ํ ์ ๋ณด๋ฅผ ์ป๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- POST - ์ ๋ฆฌ์์ค๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- PUT - ๋ฆฌ์์ค๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค(ID๋ฅผ ํตํด).
- DELETE - ๋ฆฌ์์ค๋ฅผ ์ญ์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค(ID๋ฅผ ํตํด).
์ ๋ชฉ
์์ฒญ๊ณผ ์๋ต์๋ HTTP ํค๋๊ฐ ํฌํจ๋ฉ๋๋ค. ์์ฒญ(๋๋ ์๋ต)์ ๋ํ ์ถ๊ฐ ์ ๋ณด๋ฅผ ๋ณด๋ ๋๋ค. ํค๋๋ ํค-๊ฐ ์์ ๋๋ค. Wikipedia ํ์ด์ง ์์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ ๋ชฉ ๋ชฉ๋ก์ ์ฝ์ ์ ์์ต๋๋ค . REST๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ๋ํ ์์ฒญ์ Accept ํค๋๋ฅผ ๋ณด๋ผ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ค ํ์์ผ๋ก ์๋ต์ ๋ฐ์ ๊ฒ์ผ๋ก ์์ํ๋์ง ์๋ฒ์ ์๋ ค์ผ ํฉ๋๋ค. MIME ์ ํ ๋ชฉ๋ก์๋ ๋ค์ํ ํ์ ์ต์ ์ด ์ ๊ณต๋ฉ๋๋ค. MIME (๋ค๋ชฉ์ ์ธํฐ๋ท ๋ฉ์ผ ํ์ฅ)์ ์ธํฐ๋ท์ ํตํด ๋ณด๋ผ ์ ์๋๋ก ์ ๋ณด๋ฅผ ์ธ์ฝ๋ฉํ๊ณ ๋ฉ์์ง ํ์์ ์ง์ ํ๊ธฐ ์ํ ์ฌ์์ ๋๋ค. ๊ฐ MIME ์ ํ์ ์ฌ๋์๋ก ๊ตฌ๋ถ๋ ์ ํ๊ณผ ํ์ ์ ํ์ ๋ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๋ค์ํ ํ์ผ ์ ํ์ ๋ํ MIME ์ ํ์ ์:- ํ ์คํธ - ํ ์คํธ/์ผ๋ฐ, ํ ์คํธ/CSS, ํ ์คํธ/html;
- ์ด๋ฏธ์ง - ์ด๋ฏธ์ง/png, ์ด๋ฏธ์ง/jpeg, ์ด๋ฏธ์ง/gif;
- ์ค๋์ค - ์ค๋์ค/wav, ์ค๋์ค/mpeg;
- ๋น๋์ค - ๋น๋์ค/mp4, ๋น๋์ค/ogg;
- ์ ํ๋ฆฌ์ผ์ด์ - ์ ํ๋ฆฌ์ผ์ด์ /json, ์ ํ๋ฆฌ์ผ์ด์ /pdf, ์ ํ๋ฆฌ์ผ์ด์ /xml, ์ ํ๋ฆฌ์ผ์ด์ /์ฅํ -์คํธ๋ฆผ.
Accept:application/json
์ด ํค๋๋ ํด๋ผ์ด์ธํธ๊ฐ JSON ํ์์ ์๋ต์ ๋ฐ์ ๊ฒ์ผ๋ก ์์ํ๋ค๋ ๊ฒ์ ์๋ฒ์ ์๋ ค์ค๋๋ค.
์์ฒญ ๋ณธ๋ฌธ
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก ๋ณด๋ธ ๋ฉ์์ง์ ๋๋ค. ์์ฒญ์ ๋ณธ๋ฌธ์ด ์๋์ง ์ฌ๋ถ๋ HTTP ์์ฒญ ์ ํ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ์๋ฅผ ๋ค์ด GET ๋ฐ DELETE ์์ฒญ์ ์ผ๋ฐ์ ์ผ๋ก ์์ฒญ ๋ณธ๋ฌธ์ ํฌํจํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ PUT ๋ฐ POST์๋ ๋ค์์ด ํฌํจ๋ ์ ์์ต๋๋ค. ์ด๋ ๋ชจ๋ ์์ฒญ ์ ํ์ ๊ธฐ๋ฅ์ ๋ชฉ์ ์ ๊ดํ ๊ฒ์ ๋๋ค. ๊ฒฐ๊ตญ, id(URL๋ก ์ ์ก๋๋)๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ณ ์ญ์ ํ๊ธฐ ์ํด์๋ ์๋ฒ์ ์ถ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ํ์๊ฐ ์์ต๋๋ค. ํ์ง๋ง ์ ๋ฆฌ์์ค(POST ์์ฒญ)๋ฅผ ์์ฑํ๋ ค๋ฉด ์ด ๋ฆฌ์์ค๋ฅผ ์ ์กํด์ผ ํฉ๋๋ค. ๊ธฐ์กด ๋ฆฌ์์ค๋ฅผ ์์ ํ๋ ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. REST์์๋ ์์ฒญ ๋ณธ๋ฌธ์ ์ ์กํ๋ ๋ฐ XML ๋๋ JSON ํ์์ด ๊ฐ์ฅ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค. ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ํ์์ JSON์ ๋๋ค. ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ ๊ทธ ์์์ ์ ๋ฆฌ์์ค๋ฅผ ์์ฑํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ๊ธฐ์ตํ์ ๋ค๋ฉด, ์ฐ๋ฆฌ๋ ๊ณ ๊ฐ ์ฃผ๋ฌธ์ ๊ด๋ฆฌํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ก ์ดํด๋ณด์์ต๋๋ค. ์ ํด๋ผ์ด์ธํธ๋ฅผ ์์ฑํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ์ ๋ํด ๋ค์ ์ ๋ณด๋ฅผ ์ ์ฅํฉ๋๋ค. ์ด๋ฆ ์ด๋ฉ์ผ ์ ํ๋ฒํธ ๊ทธ๋ฌํ ์์ฒญ์ ๋ณธ๋ฌธ์ ๋ค์ JSON์ด ๋ ์ ์์ต๋๋ค.{
"name" : "Amigo",
"email" : "amigo@jr.com",
"phone" : "+7 (191) 746-43-23"
}
์์ฒญ ์ข ํฉ
๊ทธ๋์ ์ฐ๋ฆฌ๋ ํด๋ผ์ด์ธํธ ์์ฒญ์ด ๋ฌด์์ผ๋ก ๊ตฌ์ฑ๋ ์ ์๋์ง ์ดํด๋ณด์์ต๋๋ค. ์ด์ ์ค๋ช ์ด ํฌํจ๋ ์ฟผ๋ฆฌ์ ๋ช ๊ฐ์ง ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.์๊ตฌ | ์ค๋ช |
---|---|
|
23๋ฒ ํด๋ผ์ด์ธํธ์ ๋ํ ์ ๋ณด๋ฅผ json ๋๋ xml ํ์์ผ๋ก ๊ฐ์ ธ์ต๋๋ค. |
|
๋ค์ ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ํด๋ผ์ด์ธํธ๋ฅผ ๋ง๋ญ๋๋ค. ์ด๋ฆ - Amigo ์ด๋ฉ์ผ - amigo@jr.com Tel. โ +7 (191) 746-43-23 |
|
ํด๋ผ์ด์ธํธ #1์ ๋ค์๊ณผ ๊ฐ์ด ํธ์งํ์ญ์์ค. ์ด๋ฆ - Ben ์ด๋ฉ์ผ - bigben@jr.com Tel. โ +380 (190) 346-42-13 |
|
์์คํ ์์ ๊ณ ๊ฐ ๋ฒํธ 12์ ์ฃผ๋ฌธ ๋ฒํธ 6์ ์ญ์ ํฉ๋๋ค. |
๋ต๋ณ
์๋ฒ์ ์๋ต์ ๋ํด ๋ช ๋ง๋ ๋งํด๋ณด์. ๋๋ต์ ์ผ๋ฐ์ ์ผ๋ก ๋ค์ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.- ์๋ต ์ฝ๋;
- ํค๋;
- ์๋ต ๋ณธ๋ฌธ.
HTTP ์๋ต ์ฝ๋
HTTP ์๋ต ์ฝ๋๋ฅผ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๋ค์์ Wikipedia์ ์ธ์ฉ๋ฌธ์ ๋๋ค. HTTP ์ํ ์ฝ๋๋ HTTP ํ๋กํ ์ฝ์ ํตํ ์์ฒญ์ ๋ํ ์๋ฒ ์๋ต์ ์ฒซ ๋ฒ์งธ ์ค์ ์ผ๋ถ์ ๋๋ค. 10์ง์ ์ธ ์๋ฆฌ์ ์ ์์ ๋๋ค. ์ฒซ ๋ฒ์งธ ์ซ์๋ ์ํ์ ํด๋์ค๋ฅผ ๋ํ๋ ๋๋ค. ์๋ต ์ฝ๋ ๋ค์๋ ์ผ๋ฐ์ ์ผ๋ก ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ ์์ด ์ค๋ช ๋ฌธ๊ตฌ๊ฐ ์ต๋๋ค. ์ด๋ ํด๋น ์๋ต์์๊ฒ ์ด ํน์ ์๋ต์ ์ด์ ๋ฅผ ์ค๋ช ํฉ๋๋ค. ์:- 201 ์์ฑ๋จ;
- 401 ์น์ธ๋์ง ์์;
- 507 ์ ์ฅ ๊ณต๊ฐ์ด ๋ถ์กฑํฉ๋๋ค.
- 1ะฅะฅ - ์ ๋ณด ์ ๊ณต์ฉ;
- 2ะฅะฅ - ๊ณ ๊ฐ ์์ฒญ์ ์ฑ๊ณต์ ์ธ ์๋ฝ ๋ฐ ์ฒ๋ฆฌ ์ฌ๋ก์ ๋ํด ์๋ฆฝ๋๋ค.
- 3XX - ์์ ์ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃํ๋ ค๋ฉด ์ผ๋ฐ์ ์ผ๋ก ๋ค๋ฅธ URI๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ์์ฒญ์ ํด์ผ ํจ์ ํด๋ผ์ด์ธํธ์ ์๋ฆฝ๋๋ค.
- 4ะฅะฅ - ํด๋ผ์ด์ธํธ ์ค๋ฅ. ์๋ฅผ ๋ค์ด ํด๋ผ์ด์ธํธ๊ฐ ์กด์ฌํ์ง ์๋ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ ๋ ๋ฐ์ํ ์ ์๋ ์๋ชป ๊ตฌ์ฑ๋ ์์ฒญ์ด๋ ์ ์๋ ค์ง 404 ์ฐพ์ ์ ์์ ์ฝ๋๊ฐ ์์ต๋๋ค.
- 5ะฅะฅ - ์๋ฒ ์ค๋ฅ. ์๋ฒ ์ค๋ฅ๋ก ์ธํด ์์ ์ด ์คํจํ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ์ ๋ฐํ๋ฉ๋๋ค.
GO TO FULL VERSION