API ๋? Application Programming Interface์ ์ฝ์.
https://uhhyunjoo.tistory.com/50
[Spring] API ๋ฐฉ์
API ๋? Application Programming Interface์ ์ฝ์. Appllication Programming ์ ์์ฉ ํ๋ก๊ทธ๋๋ฐ์ ๋ปํ๊ณ , ์ธํฐํ์ด์ค๋ ์๋ก ๋ค๋ฅธ ๋ ๊ฐ์ ์์คํ ์ด ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ก ์ด์ด์ฃผ๋ ๊ฒฝ๊ณ๋ฅผ ๋ปํ๋ค. ์ฆ, API๋ ์ด์
uhhyunjoo.tistory.com
Appllication Programming ์ ์์ฉ ํ๋ก๊ทธ๋๋ฐ
์ธํฐํ์ด์ค๋ ์๋ก ๋ค๋ฅธ ๋ ๊ฐ์ ์์คํ ์ด ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ก ์ด์ด์ฃผ๋ ๊ฒฝ๊ณ๋ฅผ ๋ปํ๋ค.
์ฆ, API๋ ์ด์์ฒด์ ์ ์์ฉํ๋ก๊ทธ๋จ ์ฌ์ด์ ํต์ ์ ์ฌ์ฉ๋๋ ์ธ์ด๋ ๋ฉ์์ง ํ์์ ๋งํ๋ค.
์ด์ ์ ์๋ฒ๋ ๋ฐฑ์๋์์ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํด์ ์์ฑ๋ HTML๋ฅผ ๋ธ๋ผ์ฐ์ ์๊ฒ ์ ๋ฌํด์ค์,
๋ธ๋ผ์ฐ์ ๋ ๋จ์ํ ๋ทฐ์ด ์ญํ ๋ก ์ฐ์๋ค.
์์ฆ์ ์๋ฒ๋ ๋ธ๋ผ์ฐ์ ์์ ํ์ํ ๋ฐ์ดํฐ๋ง์ ์ ๋ฌํ๋ API ์๋ฒ์ ํํ๋ก ๋ณํํ๊ณ ์๋ค.
์ฆ, ์๋ฒ๋ ๋ธ๋ผ์ฐ์ ์๊ฒ ์์ฑ๋ HTML์ด ์๋, ๋ธ๋ผ์ฐ์ ์์ ์๊ตฌํ๋ ์์ํ ๋ฐ์ดํฐ๋ฅผ ์ ํด์ค๋ค.
@ResponseBody
์ผ๋ฐ์ ์ธ JSP์ ๊ฐ์ ๋ทฐ๋ก ์ ๋ฌ๋๋ ๊ฒ ์๋๋ผ, ๋ฐ์ดํฐ ์์ฒด๋ฅผ ์ ๋ฌํ๊ธฐ ์ํ ์ฉ๋์์ ์๋ ค์ฃผ๋ annotation์ด๋ค.
@ResponseBody๋ฅผ ์ฌ์ฉํ๋ฉด HTTP์ BODY์ ๋ฌธ์ ๋ด์ฉ์ ์ง์ ๋ฐํํ๋ค.
HTTP Body ๋ถ์ ์ด ๋ฐ์ดํฐ๋ฅผ( return ๊ฐ)์ ์ง์ ๋ฃ์ด์ค๋ค
๋ฌธ์๊ฐ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋๋ค๋ฉด?
ํ๋ผ๋ฏธํฐ 'name' ์ ๊ฐ์ String name ๋ณ์์ ์ ์ฅ
hello ๊ฐ์ฒด๋ฅผ ์์ฑ
hello.setName(name) ๋ฉ์๋ ์คํ
public void setName(String name) {
this.name = name;
" ์์ฑํ hello ์ธ์คํด์ค์ name ์ด
ํ๋ผ๋ฏธํฐ์์ ๋ฐ์ name ์ด ๋๋ค "
hello ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค ( JSON ์ด default )
JSON (JavaScript Object Notation)
- ์ผ๋ฐ์ ์ผ๋ก, ์น ์ดํ๋ฆฌ์ผ์ด์
์์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ ๋ง์ด ์ฌ์ฉํ๋ค.
ex) ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ์ฌ ํํํ๋ ค๊ฑฐ๋ ๊ทธ ๋ฐ๋์ ๊ฒฝ์ฐ
key / value ๊ตฌ์กฐ
[์๋ฐ ํ๋ก๊ทธ๋๋ฐ] ์๋ฐ this๋ฅผ ํํค์ณ๋ณด์
[์๋ฐ ํ๋ก๊ทธ๋๋ฐ] ์๋ฐ this๋ฅผ ํํค์ณ๋ณด์
์๋ฐ์์ ์ ๊ณตํ๋ this ํค์๋๋ ์ธ์คํด์ค ์๊ธฐ ์์ ๋ฅผ ๊ฐ๋ฆฌํค๋ ํค์๋์ ๋๋ค. ์ด this ํค์๋๋ฅผ ํตํด ํด๋์ค ๋ฉ์๋ ๋ฐ ์์ฑ์์์ ์๊ธฐ ์์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํ๊ฑฐ๋ ์กฐ์ํ ์ ์์ต๋๋ค.
engkimbs.tistory.com
์๋ฐ์์ ์ ๊ณตํ๋ this ํค์๋๋ ์ธ์คํด์ค ์๊ธฐ ์์ ์ ๊ฐ๋ฆฌํค๋ ํค์๋์ ๋๋ค.
์ด this ํค์๋๋ฅผ ํตํด ํด๋์ค ๋ฉ์๋ ๋ฐ ์์ฑ์์์ ์๊ธฐ ์์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํ๊ฑฐ๋ ์กฐ์ํ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์ ์ค์ํ ๊ฒ์ this ํค์๋๋ ์ด ํด๋์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋ ์ธ์คํด์ค๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฐธ์กฐ๋ผ๋ ์ฌ์ค์ ๋๋ค.
์ธ์คํด์ค๋ฅผ ๊ฐ๋ฅดํค๋ ์ฐธ์กฐ์ ์ธ์คํด์ค ์์ฒด๋ ๋ค๋ฅด๋ค๋ ๊ฒ์ ์์๋์ จ์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค.
๊ฐ์ฒด์ ์ธ์คํด์ค
ํด๋์ค์ ์ํด์ ๋ง๋ค์ด์ง ๊ฐ์ฒด๋ฅผ ์ธ์คํด์ค
Animal cat = new Animal()
์ด๋ ๊ฒ ๋ง๋ค์ด์ง cat์ ๊ฐ์ฒด์ด๋ค
cat์ด๋ผ๋ ๊ฐ์ฒด๋ Animal์ ์ธ์คํด์ค์ด๋ค
์ธ์คํด์ค๋ผ๋ ๋ง์ ํน์ ๊ฐ์ฒด(cat)๊ฐ ์ด๋ค ํด๋์ค(Animal)์ ๊ฐ์ฒด์ธ์ง๋ฅผ
๊ด๊ณ์์ฃผ๋ก ์ค๋ช ํ ๋ ์ฌ์ฉ๋๋ค
์ด๋ viewResolver ๋์ HttpMessageConverter๊ฐ ๋์ํ๋๋ฐ, ๋ญ ๋ฐ์๋๋์ ๋ฐ๋ผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด ๋ค๋ฅด๋ค.
๋ฌธ์์ธ ๊ฒฝ์ฐ StringHttpMessageConverter, ๊ฐ์ฒด์ธ ๊ฒฝ์ฐ MappingJackson2 HttpMessageConverter๋ก ๋ถ๋ฆฐ๋ค.
1.hello-api ๊ฒ์
2. ๋ด์ฅ ํฐ์บฃ ์๋ฒ๊ฐ "hello-api" ์๋ค๊ณ ์คํ๋ง์๊ฒ ์๋ฆผ
3. ์คํ๋ง์ "hello-api"๊ฐ ์๋ ๊ฒ์ ํ์ธ
๊ทธ๋ฐ๋ฐ @ResponseBody๊ฐ ๋ถ์ด์๋ค?
HTTP Response์ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฅ ๊ทธ๋๋ก ๋๊น
( @ResponseBody ์์ผ๋ฉด viewResolver์๊ฒ ๋์ ธ์ ๋ง๋ ํ ํ๋ฆฟ ์์ง ์ฒ๋ฆฌ )
4-0. httpMessageConverter๊ฐ ๋์
4-1. ์ด ๋ฐ์ดํฐ๊ฐ ๋ฌธ์์ธ ๊ฒฝ์ฐ -> StringConverter ๋์
๋ฌธ์๊ฐ์ ๊ทธ๋๋ก ๋ฐํ
'Spring > Spring ์ ๋ฌธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํ๋ง ์ ๋ฌธ - (9) ํ์ ๋ฆฌํฌ์งํ ๋ฆฌ ํ ์คํธ ์ผ์ด์ค ์์ฑ (1) | 2023.01.20 |
---|---|
์คํ๋ง ์ ๋ฌธ - (8) ํ์ ๊ด๋ฆฌ ์์ (0) | 2023.01.15 |
์คํ๋ง ์ ๋ฌธ - (6) MVC์ ํ ํ๋ฆฟ ์์ง (0) | 2023.01.12 |
์คํ๋ง ์ ๋ฌธ - (5) ์ ์ ์ปจํ ์ธ (0) | 2023.01.12 |
์คํ๋ง ์ ๋ฌธ - (4) ๋น๋ํ๊ณ ์คํํ๊ธฐ (0) | 2023.01.10 |