References
Rest API๋
REST API๋ REST๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง API๋ฅผ ์๋ฏธํ๋ค.
REST๋?
REST(Representational State Transfer)์ ์ฝ์๋กย ์์์ ์ด๋ฆ์ผ๋ก ๊ตฌ๋ถํ์ฌ ํด๋น ์์์ ์ํ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ชจ๋ ๊ฒ์ ์๋ฏธํ๋ค.
1.
HTTP URI(Uniform Resource Identifier)๋ฅผ ํตํด ์์(Resource)์ ๋ช
์ํ๊ณ ,
2.
HTTP Method(POST, GET, PUT, DELETE, PATCH ๋ฑ)๋ฅผ ํตํด
3.
ํด๋น ์์(URI)์ ๋ํ CRUD Operation์ ์ ์ฉํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
CRUD Operation์ด๋
CRUD๋ ๋๋ถ๋ถ์ ์ปดํจํฐ ์ํํธ์จ์ด๊ฐ ๊ฐ์ง๋ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ธ Create(์์ฑ), Read(์ฝ๊ธฐ), Update(๊ฐฑ์ ), Delete(์ญ์ )๋ฅผ ๋ฌถ์ด์ ์ผ์ปซ๋ ๋ง๋ก,
REST์์์ CRUD Operation ๋์ ์์๋ ๋ค์๊ณผ ๊ฐ๋ค.
Create : ๋ฐ์ดํฐ ์์ฑ(POST)
Read : ๋ฐ์ดํฐ ์กฐํ(GET)
Update : ๋ฐ์ดํฐ ์์ (PUT, PATCH)
Delete : ๋ฐ์ดํฐ ์ญ์ (DELETE)
SQL
๋ณต์ฌ
REST ๊ตฌ์ฑ ์์
REST๋ ๋ค์๊ณผ ๊ฐ์ 3๊ฐ์ง๋ก ๊ตฌ์ฑ์ด ๋์ด์๋ค.
1.
์์(Resource) : HTTP URI
2.
์์์ ๋ํ ํ์(Verb) : HTTP Method
3.
์์์ ๋ํ ํ์์ ๋ด์ฉ (Representations) : HTTP Message Pay Load
REST์ ํน์ง
1.
Server-Client(์๋ฒ-ํด๋ผ์ด์ธํธ ๊ตฌ์กฐ)
2.
Stateless(๋ฌด์ํ)
3.
Cacheable(์บ์ ์ฒ๋ฆฌ ๊ฐ๋ฅ)
4.
Layered System(๊ณ์ธตํ)
5.
Uniform Interface(์ธํฐํ์ด์ค ์ผ๊ด์ฑ)
REST์ ์ฅ๋จ์
์ฅ์
โข
HTTP ํ๋กํ ์ฝ์ ์ธํ๋ผ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฏ๋ก REST API ์ฌ์ฉ์ ์ํ ๋ณ๋์ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ ํ์๊ฐ ์๋ค.
โข
HTTP ํ๋กํ ์ฝ์ ํ์ค์ ์ต๋ํ ํ์ฉํ์ฌ ์ฌ๋ฌ ์ถ๊ฐ์ ์ธ ์ฅ์ ์ ํจ๊ป ๊ฐ์ ธ๊ฐ ์ ์๊ฒ ํด ์ค๋ค.
โข
HTTP ํ์ค ํ๋กํ ์ฝ์ ๋ฐ๋ฅด๋ ๋ชจ๋ ํ๋ซํผ์์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
โข
Hypermedia API์ ๊ธฐ๋ณธ์ ์ถฉ์คํ ์งํค๋ฉด์ ๋ฒ์ฉ์ฑ์ ๋ณด์ฅํ๋ค.
โข
REST API ๋ฉ์์ง๊ฐ ์๋ํ๋ ๋ฐ๋ฅผ ๋ช
ํํ๊ฒ ๋ํ๋ด๋ฏ๋ก ์๋ํ๋ ๋ฐ๋ฅผ ์ฝ๊ฒ ํ์
ํ ์ ์๋ค.
โข
์ฌ๋ฌ ๊ฐ์ง ์๋น์ค ๋์์ธ์์ ์๊ธธ ์ ์๋ ๋ฌธ์ ๋ฅผ ์ต์ํํ๋ค.
โข
์๋ฒ์ ํด๋ผ์ด์ธํธ์ ์ญํ ์ ๋ช
ํํ๊ฒ ๋ถ๋ฆฌํ๋ค.
๋จ์
โข
ํ์ค์ด ์์ฒด๊ฐ ์กด์ฌํ์ง ์์ ์ ์๊ฐ ํ์ํ๋ค.
โข
HTTP Method ํํ๊ฐ ์ ํ์ ์ด๋ค.
โข
๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ํ
์คํธํ ์ผ์ด ๋ง์ ์๋น์ค๋ผ๋ฉด ์ฝ๊ฒ ๊ณ ์น ์ ์๋ URL๋ณด๋ค Header ์ ๋ณด์ ๊ฐ์ ์ฒ๋ฆฌํด์ผ ํ๋ฏ๋ก ์ ๋ฌธ์ฑ์ด ์๊ตฌ๋๋ค.
โข
๊ตฌํ ๋ธ๋ผ์ฐ์ ์์ ํธํ์ด ๋์ง ์์ ์ง์ํด์ฃผ์ง ๋ชปํ๋ ๋์์ด ๋ง๋ค.(์ต์คํด๋ก์ด)
REST API๋?
REST API๋ REST์ ์๋ฆฌ๋ฅผ ๋ฐ๋ฅด๋ API๋ฅผ ์๋ฏธํ๋ค.
ํ์ง๋ง REST API๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ค๊ณํ๊ธฐ ์ํด์๋ ์ง์ผ์ผ ํ๋ ๋ช๊ฐ์ง ๊ท์น์ด ์๋ค.
REST API ์ค๊ณ ์์
1. URI๋ ๋์ฌ๋ณด๋ค๋ ๋ช
์ฌ๋ฅผ, ๋๋ฌธ์๋ณด๋ค๋ ์๋ฌธ์๋ฅผ ์ฌ์ฉํ์ฌ์ผ ํ๋ค.
โข
Bad Exampleย http://khj93.com/Running/
โข
Good Exampleย ย http://khj93.com/run/
2. ๋ง์ง๋ง์ ์ฌ๋์ (/)๋ฅผ ํฌํจํ์ง ์๋๋ค.
โข
Bad Exampleย http://khj93.com/test/ย ย
โข
Good Exampleย ย http://khj93.com/test
3. ์ธ๋๋ฐ ๋์ ํ์ดํฐ์ ์ฌ์ฉํ๋ค.
โข
Bad Exampleย http://khj93.com/test_blog
โข
Good Exampleย ย http://khj93.com/test-blog
4. ํ์ผํ์ฅ์๋ URI์ ํฌํจํ์ง ์๋๋ค.
โข
Bad Exampleย http://khj93.com/photo.jpgย ย
โข
Good Exampleย ย http://khj93.com/photo
5. ํ์๋ฅผ ํฌํจํ์ง ์๋๋ค.
โข
Bad Exampleย http://khj93.com/delete-post/1ย ย
โข
Good Exampleย ย http://khj93.com/post/1
์ ๋ฆฌ - RESTful์ด๋?
RESTFUL์ด๋ REST์ ์๋ฆฌ๋ฅผ ๋ฐ๋ฅด๋ ์์คํ
์ ์๋ฏธํ๋ค. ํ์ง๋ง REST๋ฅผ ์ฌ์ฉํ๋ค ํ์ฌ ๋ชจ๋๊ฐ RESTful ํ ๊ฒ์ ์๋๋ค.ย ย REST API์ ์ค๊ณ ๊ท์น์ ์ฌ๋ฐ๋ฅด๊ฒ ์งํจ ์์คํ
์ RESTfulํ๋ค ๋งํ ์ ์์ผ๋ฉฐ ๋ชจ๋ CRUD ๊ธฐ๋ฅ์ POST๋ก ์ฒ๋ฆฌ ํ๋ API ํน์ URI ๊ท์น์ ์ฌ๋ฐ๋ฅด๊ฒ ์งํค์ง ์์ API๋ย REST API์ ์ค๊ณ ๊ท์น์ ์ฌ๋ฐ๋ฅด๊ฒ ์งํค์ง ๋ชปํ ์์คํ
์ REST API๋ฅผ ์ฌ์ฉํ์์ง๋ง RESTful ํ์ง ๋ชปํ ์์คํ
์ด๋ผ๊ณ ํ ์ ์๋ค.