JSON(JavaScript Object Notation)์ด๋ ๋ฌด์์ธ๊ฐ? ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ฑฐ๋ ์ ์กํ ๋ ๋ง์ด ์ฌ์ฉ๋๋ ๊ฒฝ๋์ DATA ๊ตํ ํ์. ํ
์คํธ ๊ธฐ๋ฐ ๋ฐ์ดํฐ ํฌ๋งท์ผ๋ก ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ํ์ฑ ๋ฐ ์์ฑ์ด ์ฉ์ดํ๋ค. JSON์ ๋ฐ์ดํฐ ํฌ๋งท์ผ ๋ฟ์ด๋ฉฐ ๋จ์ํ ๋ฐ์ดํฐ๋ฅผ ํ์ํ๋ ํํ๋ฐฉ๋ฒ์ด๋ค. JSON์ ํน์ง ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ์ฌ JSON ๋ฌธ์๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ก ๋ณํ ๊ฐ๋ฅ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก๋ ์ฝ๊ฒ ๋ง๋ค ์ ์๋ค. ํน์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ข
์๋์ง ์์ผ๋ฉฐ, ๋๋ถ๋ถ์ ์ธ์ด์์ JSON ํฌ๋งท์ ๋ฐ์ดํฐ๋ฅผ ํธ๋ค๋ง ํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํ๋ค. XML๊ณผ ๋ค๋ฅธ์ ? ์ฐ๋ฆฌ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ด๋ ๋ฐฉ๋ฒ ์ค ๋ํ์ ์ธ ๊ฒ์ด XML์ด๋ค. XML์ ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํํํ๋ค. John 30 JSON์ ์ค๊ด..
๐ผ๋ฐฑ์ค๋/HTTP
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA4Ew0%2FbtsDd11VEMO%2FteGI0x3xIk4nrIAbzPctb0%2Fimg.png)
์บ์ ๊ธฐ๋ณธ ๋์ 1.1M(ํค๋+๋ฐ๋)๊ฐ ์ ์ก๋จ. ํด๋ผ์ด์ธํธ์์ ์์ฒญํ ๋ด์ฉ์ ๋ณด๊ณ ์๋ฒ๊ฐ ์ค์ ์ด๋ฏธ์ง์ ๊ด๋ จ๋ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ํฌํจํ ์๋ต์ ๋ด๋ฆฐ๋ค. ๋ ๋ค์ ์์ฒญํ๋ฉด ์ฒซ ๋ฒ์งธ์ฒ๋ผ ๋๊ฐ์ด 1.1MB์ ์๋ต์ ๋ณด๋ด๊ฒ ๋๊ณ ์บ์๊ฐ ์์ผ๋ฉด ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์ง ์์๋ ๊ณ์ ๋ฐ์ดํฐ๋ฅผ ๋ค์ด๋ฐ์์ผ ํ๋ค. ๋๊ฐ์ ์์
์ ๋ฐ๋ณตํ๋ ๊ฒ์ด๋ค. ์บ์๊ฐ ์์ ๋ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์ง ์์๋ ๊ณ์ ๋คํธ์ํฌ๋ฅผ ํตํด์ ๋ฐ์ดํฐ๋ฅผ ๋ค์ด๋ก๋ ๋ฐ์์ผ ํ๋ค. ์ธํฐ๋ท ๋คํธ์ํฌ๋ HDD๋ฑ์ ๋นํด์ ์๋์ ์ผ๋ก ๋งค์ฐ ๋๋ฆฌ๊ณ ๋น์ธ๋ค. ๋ธ๋ผ์ฐ์ ๋ก๋ฉ ์๋๊ฐ ๋๋ฆฌ๋ค. ๋๋ฆฐ ์ฌ์ฉ์ ๊ฒฝํ ์บ์๋ฅผ ์ ์ฉํ๋ค๋ฉด ์ฒ์ ์์ฒญํ์ ๋ ์บ์๊ฐ ์ ํจํ ์๊ฐ์ cache-control์ ์ค์ ํด์ ์๋ต์ ๋ณด๋ธ๋ค. ์น ๋ธ๋ผ์ฐ์ ์๋ ์บ์๋ฅผ ์ ์ฅํ๋ ๊ณต๊ฐ์ด ์์ด์ ์ ํจํ ์๊ฐ๋งํผ ์๋ต ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmazRC%2FbtsDiab850w%2FyQPHMHVKr6fDACzOqYJJtk%2Fimg.png)
HTTP ํค๋ ์ ์ ํค๋ ํ๋๋ field-name + “:” + OWS + field-value + OWS๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. (OWS = ๋์ด์ฐ๊ธฐ ํ์ฉ) field-name์๋ ๋์๋ฌธ์ ๊ตฌ๋ถ์ด ์๋ค. ๋
ธ๋์นธ์ด ํค๋๋ถ๋ถ์ด๋ค. ์ฉ๋ HTTP ์ ์ก์ ํ์ํ ๋ชจ๋ ๋ถ๊ฐ ์ ๋ณด ex) ๋ฉ์์ง ๋ฐ๋ ๋ด์ฉ, ๋ฉ์์ง ๋ฐ๋ ํฌ๊ธฐ, ์์ถ, ์ธ์ฆ, ์์ฒญ ํด๋ผ์ด์ธํธ, ์๋ฒ์ ๋ณด, ์บ์๊ด๋ฆฌ์ ๋ณด ํ์คํค๋๊ฐ ๋๋ฌด ๋ง๋ค. ํ์์ ์์์ ํค๋๋ฅผ ์ถ๊ฐํ ์ ์๋ค. ๊ณผ๊ฑฐ - RFC2616 1. HTTP ํค๋ ํค๋ ๋ถ๋ฅ General Header = ๋ฉ์์ง ์ ์ฒด์ ์ ์ฉ๋๋ ์ ๋ณดex) Connection: close Request Header = ์์ฒญ ์ ๋ณด ex) User-Agent: Mozilla/5.0 (Macintosh; ..) Resp..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FO71mc%2FbtsDhxrV60O%2FHfq9vW6UuTvklHK6qA7O8K%2Fimg.png)
1. HTTP ์ํ ์ฝ๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ์์ฒญ(request)์ ์ฒ๋ฆฌ ์ํ๋ฅผ ์๋ต(response)์์ ์๋ ค์ฃผ๋ ๊ธฐ๋ฅ 1xx (Informational): ์์ฒญ์ด ์์ ๋์ด ์ฒ๋ฆฌ์ค 2xx (Successful): ์์ฒญ ์ ์ ์ฒ๋ฆฌ 3xx (Redirection): ์์ฒญ์๋ฃ ์ํด ์ถ๊ฐ ํ๋ ํ์ 4xx (Client Error): ํด๋ผ์ด์ธํธ ์ค๋ฅ 5xx (Server Error): ์๋ฒ ์ค๋ฅ ์ฒ๋ฆฌ์ค,์ ์,์ถ๊ฐํ๋,ํด๋ผ์ด์ธํธ,์๋ฒ ์๋ฅผ ๋ค์ด ๋ชจ๋ฅด๋ ์ํ์ฝ๋๊ฐ ์๊ธด๊ฒฝ์ฐ ์์๋ณด์. 299 ๊ฐ ๋์๋ค๋ฉด → 2xx ์ด๋ฏ๋ก Successful 599 ๊ฐ ๋์๋ค๋ฉด → 5xx ์ด๋ฏ๋ก Server Error ํด๋ผ์ด์ธํธ๋ ์ธ์ํ ์ ์๋ ์ํ ์ฝ๋๋ฅผ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ผ๋ฉด, ์์ ์ํ ์ฝ๋๋ก ํด์ํด์ ์ฒ๋ฆฌํ๋ค. ex) 299๋ชจ๋ฅด๋..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdM68rv%2FbtsDfk08mbt%2Fkhsv0ZXRqi2ygXwpotiKK0%2Fimg.png)
์ ๋ฌ ๋ฐฉ์ ๋ฐ์ดํฐ ์ ๋ฌ ๋ฐฉ์์ ํฌ๊ฒ 2๊ฐ์ง์ด๋ค. 1. ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ฅผ ํตํ ๋ฐ์ดํฐ ์ ์ก GET ์ฃผ๋ก ๊ฒ์์ด๋ฅผ ๋ฃ๊ฑฐ๋ ์ ๋ ฌ ์กฐ๊ฑด์ ๋ฃ์ ๋ ์ฌ์ฉํ๋ค. 2. ๋ฉ์์ง ๋ฐ๋๋ฅผ ํตํ ๋ฐ์ดํฐ ์ ์ก POST, PUT, PATCH ํ์ ๊ฐ์
, ์ฃผ๋ฌธ, ๋ฆฌ์์ค ๋ฑ๋ก, ๋ฆฌ์์ค ๋ณ๊ฒฝ์ ์ฌ์ฉํ๋ค. ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ฐ์ดํฐ ์ ์กํ๋ ์ํฉ์๋ 4๊ฐ์ง๊ฐ ์๋ค. ์ ์ ๋ฐ์ดํฐ ์กฐํ ๋์ ๋ฐ์ดํฐ ์กฐํ HTML Form์ ํตํ ๋ฐ์ดํฐ ์ ์ก HTTP API๋ฅผ ํตํ ๋ฐ์ดํฐ ์ ์ก 1. ์ ์ ๋ฐ์ดํฐ ์กฐํ - ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ๋ฏธ์ฌ์ฉ ์ด๋ฏธ์ง, ์ ์ ํ
์คํธ ๋ฌธ์ ์ ๋ฌ GET ์ฌ์ฉ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ์์ด ๋ฆฌ์์ค ๊ฒฝ๋ก๋ก ๋จ์ํ๊ฒ ์กฐํ ๊ฐ๋ฅ ํด๋ผ์ด์ธํธ์์ “๋ณ” ์ด๋ฏธ์ง๋ฅผ ๋ณด๋ด๋ฉด ์ถ๊ฐ ๋ฐ์ดํฐ๊ฐ ํ์์๋ค. URI ๊ฒฝ๋ก๋ง ๋ฃ์ผ๋ฉด ๋๋ค. ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ก ์ถ๊ฐ์ ์ธ ๋ฐ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdrQLdi%2FbtsDhBgKMyM%2FDKUL1hMerlqT4vvJVub34K%2Fimg.png)
HTTP API ๋ฉ์๋ ์๊ตฌ์ฌํญ ํ์ ๋ชฉ๋ก ์กฐํ ํ์ ์กฐํ ํ์ ๋ฑ๋ก ํ์ ์์ ํ์ ์ญ์ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ ๊ฒ ์๊ฐํ ์ ์๋ค. API URL ์ค๊ณ ํ์ ๋ชฉ๋ก ์กฐํ → /read-member-list ํ์ ์กฐํ → /read-member-by-id ํ์ ๋ฑ๋ก → /create-member ํ์ ์์ → /update-member ํ์ ์ญ์ → /delete-member ํ์ง๋ง, ์ด๋ ์ข์ ์ค๊ณ๊ฐ ์๋๋ค. URI์์ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๋ฆฌ์์ค ์๋ณ์ด๋ค. ๋ฆฌ์์ค์ ๋ํด ์์๋ณด์. ๋ฆฌ์์ค๋? ํ์์ ๋ฑ๋ก,์์ ,์กฐํ ํ๋๊ฒ์ ๋ฆฌ์์ค๊ฐ ์๋๋ค. ๋ฆฌ์์ค๋ “ํ์” ๊ทธ ์์ฒด๊ฐ ๋ฆฌ์์ค์ด๋ค. ๊ณ์ธต ๊ตฌ์กฐ ์์๋ฅผ ์ปฌ๋ ์
์ผ๋ก ๋ณด๊ณ ๋ณต์ ๋จ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. ex) members ํ์ ๋ชฉ๋ก ์กฐํ → /members ํ์ ์กฐ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbS3hKO%2FbtsDhWkDBtm%2FEMGcrkLAxOpg31mIcJrWXk%2Fimg.png)
1. HTTP protocol HyperText Transfer Protocol ์์์ ๋งํ TCP/IP๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๋ชจ๋ธ์ ์ฌ์ฉํ๋ ํ๋กํ ์ฝ, ํด๋ผ์ด์ธํธ์ ์๊ตฌ์ ๋ง๋ ์๋ฒ๊ฐ ์์
์ ํ๋ค. HTTP๋ TCP/IPํ๋กํ ์ฝ์ ๊ธฐ๋ฐ์ผ๋ก ํ ํ๋กํ ์ฝ. ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ HTTP์์ฒญ ๋ฐ ์๋ต์ ํ ์ ์๋ค. HTTP๋ ๋ชจ๋ ๊ฒ์ ์ ์กํ๋ค. ์๋ฒ ๊ฐ์ ํต์ ํ ๋๋ TCP๋ฅผ ์ง์ ์ฐ๊ฒฐํ๊ธฐ ๋ณด๋ค๋ ๋๋ถ๋ถ HTTP๋ฅผ ์ฌ์ฉํ๋ค. 1-1) HTTP ์ญ์ฌ HTTP/0.9 1991๋
: GET ๋ฉ์๋๋ง ์ง์, HTTP ํค๋X HTTP/1.0 1996๋
: ๋ฉ์๋, ํค๋ ์ถ๊ฐ HTTP/1.1 1997๋
: ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ, ์ฐ๋ฆฌ์๊ฒ ๊ฐ์ฅ ์ค์ํ ๋ฒ์ RFC2068 (1997) -> RFC2616 (1999) -> RFC7..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd1OuI8%2FbtsDfmK7sQm%2FWSqxVrvN2AfEA16wkpumKK%2Fimg.png)
1. URI URI?URL?URN? ๊ฐ๋
์ ํ์คํ ํ๊ณ ๋์ด๊ฐ์ผ ํ๋ค. ๋ฆฌ์์ค๋ฅผ ์๋ณํ๋ URI์์ URL, URN์ด ์กด์ฌํ๋ค. URI ์์์ด ์ด๋์ ์๋์ง ์์ ์์ฒด๋ฅผ ์๋ณํ๋ ๋ฐฉ๋ฒ์ด๋ค. location์ด๋ name ํน์ ๋ ๋ค ์ถ๊ฐ๋ก ๋ถ๋ฅ๋ ์ ์๋ค. Uniform - ๋ฆฌ์์ค๋ฅผ ์๋ณํ๋ ํต์ผ๋ ๋ฐฉ์ Resource - ์์, URI๋ก ์๋ณํ ์ ์๋ ๋ชจ๋ ๊ฒ(์ ํ ์์) ์น ๋ธ๋ผ์ฐ์ ์ ํ์ผ๋ง ๋ปํ๋ ๊ฒ ์๋๋ค. ์ค์๊ฐ ๊ตํต์ ๋ณด ๋ฑ ์ฐ๋ฆฌ๊ฐ ๊ตฌ๋ถํ ์ ์๋ ๊ฒ์ ๋ชจ๋ ๊ฒ์ด ๋ฆฌ์์ค์ด๋ค. Identifier - ๋ค๋ฅธ ํญ๋ชฉ๊ณผ ๊ตฌ๋ถํ๋๋ฐ ํ์ํ ์ ๋ณด URL(Location) ๋ฆฌ์์ค์ ์์น๋ฅผ ๋ปํ๋ค. URN(Name) ๋ฆฌ์์ค์ ์ด๋ฆ์ ์๋ฏธํ๋ค. URN์ ๊ฒฝ์ฐ ๋ฆฌ์์ค๊ฐ ์ด๋ฆ์ ๋งคํ๋์ด ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฆ์ผ๋ก ..