2021. 1. 3. 14:04ใ๐ Web
๋ณธ ํฌ์คํ ์ ์ฐ์ํ ํ์ ๋ค, ๊น์ํ ๋์ '๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ์น ๊ธฐ๋ณธ ์ง์' ๊ฐ์๋ฅผ ์๊ฐ ํ ์ ๋ฆฌํ ๊ธ์ ๋๋ค.
1. ํด๋ผ์ด์ธํธ -> ์๋ฒ๋ก ๋ฐ์ดํฐ ์ ์ก
-> ๋ฐ์ดํฐ ์ ์ก ๋ฐฉ์์ ํฌ๊ฒ 2๊ฐ์ง:
- ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ฅผ ํตํ ๋ฐ์ดํฐ ์ ์ก
- ๋ฉ์์ง ๋ฐ๋๋ฅผ ํตํ ๋ฐ์ดํฐ ์ ์ก
-> ๋ฐ์ดํฐ ์ ์ก ์ํฉ์ ํฌ๊ฒ 4๊ฐ์ง
- ์ ์ ๋ฐ์ดํฐ ์กฐํ: ์ด๋ฏธ์ง, ์ ์ ํ ์คํธ ๋ฌธ์
- ๋์ ๋ฐ์ดํฐ ์กฐํ: ์ฃผ๋ก ๊ฒ์, ๊ฒ์ํ ๋ชฉ๋ก์์ ์ ๋ ฌ ํํฐ(๊ฒ์์ด)
- HTML Form ํตํ ๋ฐ์ดํฐ ์ ์ก: ํ์๊ฐ์ , ์ํ ์ฃผ๋ฌธ, ๋ฐ์ดํฐ ๋ณ๊ฒฝ
- HTTP API ํตํ ๋ฐ์ดํฐ ์ ์ก: ํ์๊ฐ์ , ์ํ ์ฃผ๋ฌธ, ๋ฐ์ดํฐ ๋ณ๊ฒฝ + ์๋ฒto์๋ฒ, ์ฑ ํด๋ผ์ด์ธํธ, ์น ํด๋ผ์ด์ธํธ
2. ์ ์ ๋ฐ์ดํฐ ์กฐํ
-> ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ๋ฏธ์ฌ์ฉ ( ๊ทธ๋ ๋ค๊ณ ๋ฉ์์ง ๋ฐ๋๋ฅผ ์ฌ์ฉํ์ง๋ ์์ -> ์กฐํ๋ GET ๋ฉ์๋์ด๊ธฐ ๋๋ฌธ)
=> ๋จ์ URI(๊ฒฝ๋ก) ๋ง์ผ๋ก ์กฐํ ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ ํด๋น
3. ๋์ ๋ฐ์ดํฐ ์กฐํ (GET๋ฉ์๋ ์ฌ์ฉ)
-> ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ์ฌ์ฉ. ์๋์ ๊ฐ์ URI๋ฅผ ํตํด ์ ์: ์๋ฒ๋ก HTTP message ๋์ง๋ค.
-> ์ฃผ๋ก ๊ฒ์, ๊ฒ์ํ ๋ชฉ๋ก์์ ์ ๋ ฌํํฐ (๊ฒ์์ด)
-> ์กฐํ ์กฐ๊ฑด์ ์ค์ฌ์ฃผ๋ ํํฐ, ์กฐํ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ ฌํ๋ ์ ๋ ฌ ์กฐ๊ฑด์ ์ฃผ๋ก ์ฌ์ฉ
4. HTML Form ํตํ ๋ฐ์ดํฐ ์ ์ก (POST ๋ฉ์๋)
-> html form ํ๊ทธ ๋ด๋ถ์ ๊ฐ์ ์ ๋ ฅํ์ฌ ์ ์ฅ๊น์ง ํ ๊ฒฝ์ฐ: ๋ฉ์์ง ๋ฐ๋๋ฅผ ํตํด ์ ์ก
-> POST ๋ฉ์๋๋ก ์ ๊ทผํ์ฌ ๊ฐ์ ์๋ฒ์ ์ ์กํ๋ค. -> ์ด ๊ฒฝ์ฐ kim, 20๊ฐ์ ์๋ฒ์ ์ ์ฅ๋๋ค.
-> Content-Type: applications/x-www-form-urlencoded ์ฌ์ฉ
- form์ ๋ด์ฉ์ ๋ฉ์์ง ๋ฐ๋๋ฅผ ํตํด ์ ์ก (์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ํ์)
- ์ ์ก ๋ฐ์ดํฐ๋ฅผ url encoding ์ฒ๋ฆฌ
5. HTML Form ํตํ ๋ฐ์ดํฐ ์ ์ก (POST ๋ฉ์๋) + multipart/form-data
- ํ ์คํธ ๋ฐ์ดํฐ ๋ฟ๋ง ์๋๋ผ ํ์ผ ์ ๋ก๋ ํ์ํ ๊ฒฝ์ฐ, formํ๊ทธ ๋ด๋ถ์ ์ ์ธํด์ค๋ค.
<form enctype = 'multipart/form-data'>
...
</form>
- ๋ค๋ฅธ ์ข ๋ฅ์ ์ฌ๋ฌ ํ์ผ๊ณผ ํผ์ ๋ด์ฉ์ ํจ๊ป ์ ์ก ๊ฐ๋ฅ (multipart)
6. HTML Form ํตํ ๋ฐ์ดํฐ ์ ์ก (GET ๋ฉ์๋)
-> ๋จ์ ์กฐํ์ ๊ฒฝ์ฐ, form ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ ฅํ ๊ฐ์ ์กฐํํ ์ ์๋ค.
-> ๋จ, POST ๋ฉ์๋ ์ฒ๋ผ ๊ฐ์ ์๋ฒ์ ์ ์ฅํ ์ ์๋ค (GET์ ๋ฆฌ์์ค ๋ณ๊ฒฝ(์์ฑ)์ด ๋ฐ์ํ๋ ๊ณณ์์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ)
7. ์ฆ, HTML form ์ ์ก์ GET, POST๋ง ์ง์
8. HTTP API ๋ฐ์ดํฐ ์ ์ก
HTTP API ์ค๊ณ ์์
9. EX) ํ์ ๊ด๋ฆฌ ์์คํ - POST ๊ธฐ๋ฐ ๋ฑ๋ก
- ํด๋ผ์ด์ธํธ๋ ๋ฑ๋ก๋ ๋ฆฌ์์ค(ํ์)์ URI๋ฅผ ๋ชจ๋ฅธ๋ค.
- ์ฆ, ์๋ฒ๊ฐ ์๋ก ๋ฑ๋ก๋ ๋ฆฌ์์ค URI๋ฅผ ์์ฑํด์ค๋ค. (ex /members/100 <- ์ด 100์ด๋ผ๋ ๋ฆฌ์์ค๋ ์๋ฒ์ ์ํด ์์ฑ๋ ๊ฒ)
- ์ด๋ฅผ ์ปฌ๋ ์ ์ด๋ผ ๋ถ๋ฅด๋ฉฐ, ์๋ฒ๊ฐ ๊ด๋ฆฌํ๋ ๋ฆฌ์์ค ๋๋ ํ ๋ฆฌ๋ฅผ ๋ปํ๋ค. (์ฌ๊ธฐ์ ์ปฌ๋ ์ ์ /members)
10. ex) ํ์ผ ๊ด๋ฆฌ ์์คํ - PUT ๊ธฐ๋ฐ ๋ฑ๋ก
-> ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌ์์ค URI๋ฅผ ์๊ณ ์์ด์ผ ํ๋ค (POST์ฒ๋ผ ์๋ฒ๊ฐ URI๋ฅผ ์์ฑํด์ฃผ์ง ์๋๋ค, ํด๋ผ์ด์ธํธ๊ฐ ์ง์ URI ์ง์ ).
- ํ์ผ ๋ฑ๋ก /files/{filename} -> PUT
- PUT /files/jpa.jpg (ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ค ํ์ผ์ ๋ฑ๋กํ๋ ๊ฒ์ด๊ธฐ์ ๋น์ฐํ URI๋ฅผ ์ง์ ์ง์ ํ ์ ์์ด์ผํ๋ค)
- ์ปฌ๋ ์ ๊ณผ ๋์๋๋ ๊ฐ๋ ์ผ๋ก ์คํ ์ด(store)๋ฅผ ์ฌ์ฉ -> ํด๋ผ์ด์ธํธ๊ฐ ๊ด๋ฆฌํ๋ ๋ฆฌ์์ค ์ ์ฅ์๋ฅผ ๋ปํ๋ค
11. ex) HTML FORM ์ฌ์ฉ
-> GET, POST ๋ฉ์๋๋ง ์ง์ํ๋ค
-> GET, POST ๋ฉ์๋๋ง ์ฌ์ฉํ๊ธฐ์ '์ญ์ '์ ๊ฒฝ์ฐ URI๋ฅผ /members/{id}/delete ์ฒ๋ผ ์์ฑํด์ผ ํ๋ค (ํ๊ณ)
-> ์ด๋ฌํ ํ๊ณ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ปจํธ๋กค URI ๋์
12. ์ปจํธ๋กค URI
-> POST, GET์ผ๋ก๋ ํด๊ฒฐํ๊ธฐ ์ด๋ ค์ด ๋ถ๋ถ์ ๋์ฌ๋ฅผ ์ง์ ์ฌ์ฉํ์ฌ URI ์ค๊ณ
-> POST์ /new, /edit, /delete ๊ฐ ์ปจํธ๋กค URI์ ํด๋น
13. ์ ๋ฆฌ
-> ๊ฐ๋ฐํ ๋ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ๋ ์ปฌ๋ ์ ๊ธฐ๋ฐ์ URI๋ก ์ค๊ณ
-> ์๋ ์ฐธ๊ณ ๋ฌธ์์์ ํด๋น ๋ด์ฉ์ ๋ ๊ณต๋ถํ ์ ์๋ค.
์ฐธ๊ณ : restfulapi.net/resource-naming/
'๐ Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
7. HTTP ํค๋ 2 - ์บ์์ ์กฐ๊ฑด๋ถ ์์ฒญ (2) | 2021.01.17 |
---|---|
7. HTTP ํค๋ 1 - ์ผ๋ฐ ํค๋ (0) | 2021.01.11 |
4. HTTP ๋ฉ์๋ (0) | 2021.01.03 |
3. HTTP (0) | 2020.12.31 |
2. URI์ ์น ๋ธ๋ผ์ฐ์ ์์ฒญ ํ๋ฆ (0) | 2020.12.26 |