Controller
Last updated
Last updated
HTTP Request๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ค ๊ฒ์ธ์ง ์ ์ํจ
Controller๊ฐ ์์ฒญ์ ๋ฐ๊ณ ์๋ต์ ๋ง๋ค์ด์ฃผ๋ ํด๋์ค
์ ๋งํ ๊ฒ์ ์ด ํด๋์ค ์์ ๋ค ๋ค์ด์์
๋ด๊ฐ ์ํ๋ Controller๋ฅผ ๋ง๋ค์ด์ค ๋ ์ด ํด๋์ค๋ฅผ ์์ ๋ฐ์์ ๋ด์ฅ๋ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์ปจํธ๋กค๋ฌ๋ฅผ ์ปค์คํ ํด์ฃผ๋ฉด ๋จ
๊ธฐ๋ฅ : ์ํฉ๋ณ ์๋ต์์ฑ(200, 300, 400 status code), ํ์ผ ๋ฐํ, ๋ชจ๋ธ ์ ๋ฐ์ดํธ, ๋ชจ๋ธ ์ ํจ์ฑ ๊ฒ์ฌ
Controller ํด๋์ค
ControllerBase๋ฅผ ์์๋ฐ์ View์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ํด๋์ค์
MVC model์์ ์ฌ์ฉํ๊ธฐ ์ข์
WebAPI ์๋ฒ์์๋ View์ ๊ธฐ๋ฅ์ ํ์ ์์ผ๋ ControllerBase๋ฅผ ์์๋ฐ์ ์ฌ์ฉํ๋ฉด ๋จ
์ด ์์ฑ์ ์ปจํธ๋กค๋ฌ ํด๋์ค์ ์ ์ฉํ์ฌ HTTP API ์๋ต์ ์ ๊ณตํ๋ ๊ฒ๊ณผ ๊ด๋ จ๋ ๋์์ ํ ์ ์์
์ด ์์ฑ์ ์ ์ฉํ ์ปจํธ๋กค๋ฌ ํด๋์ค ์ด๋ฆ์๋ ๋ค์ Controller
๋ฅผ ๋ถ์ด๋ ๊ฒ์ด ๊ด์ต (์์ ๋ฒ์ ์์๋ ํ์์์)
[Route("[controller]")]
Route("...") ์์ [controller]๋ฅผ ์ฐ๋ฉด, class ์ด๋ฆ์์ Controller๋ฅผ ๋บ ์์ชฝ์ ๋จ์ด๋ฅผ ๊ทธ๋๋ก ์ ์ฉํ๊ฒ ๋จ. "..."์ ์ํ๋ ๋ฌธ์๋ฅผ ์ ์ด์ค์๋ ์์
๋/์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์์
๊ณ์ธต์ ์ผ๋ก ๊ตฌ์ฑํด์ค ์ ์์. class๋ฅผ Route๋ก ๊ฐ์ธ๊ณ , ์ก์ ์ ๋ ๋ผ์ฐํธ๋ก ๊ฐ์ธ๋ฉด ๊ณ์ธต์ ์ผ๋ก ์ค์ ๋จ
์์ฒญ ๋ฐ์ดํฐ(๋งค๊ฐ๋ณ์)๊ฐ ์ด๋์ ๋ด๊ฒจ์ฌ์ง์ ๋ํ ์ ๋ณด
Action ๋ฉ์๋์ ๋งค๊ฐ๋ณ์ ์์ ์์ฑ์ ๋ถ์ฌ์ค ์ ์์ [HttpPost] public IActionResult Action3([FromBody] Product product, [FromBody] Order order)
1
[FromBody]
์์ฒญ ๋ณธ๋ฌธ. JSON ๊ฐ์ ๋ณตํฉ ํ์ ์ ๋ณด
2
[FromForm]
์์ฒญ ๋ณธ๋ฌธ์์์ form data
3
[FromRoute]
์์ฒญ ๊ฒฝ๋ก ๋ฐ์ดํฐ(URI)
4
[FromQuery]
์์ฒญ ์ฟผ๋ฆฌ ๋ฌธ์์ด ๋งค๊ฐ๋ณ์(URI?key=val)
5
[FromHeader]
์์ฒญ ํค๋
6
[FromServices]
์์ ๋งค๊ฐ ๋ณ์๋ก ์ฝ์ ๋ ์์ฒญ ์๋น์ค
7
[AsParameters]
๋ฉ์๋ ๋งค๊ฐ๋ณ์
๋์ผํ route์ ๋์ผํ verb์ ๋ํด์๋ ํ๊ฐ์ ์ปจํธ๋กค๋ฌ ๋ฉ์๋๋ง ์ง์ ํด์ค ์ ์์
[HttpGet] [HttpGet("{id}")]
GET ์์ฒญ์ ์ด ์์ฑ์ด ๋ถ์ ์ก์ ์ ์คํํจ
route/{id} ์ id๊ฐ์ ๋งค๊ฐ๋ณ์๋ก ์ฌ์ฉํ ์ ์์
[HttpPost]
[HttpPut]
[HttpDelete]
[HttpHead]
[HttpPatch]
๋ชจ๋ ํ ํ๋ฆฟ์ routeํ ํ๋ฆฟ์ด๋ฉฐ, ๊ฐ ํ ํ๋ฆฟ๋ณ๋ก ์์ฑ์ ๊ฐ๊ณ ์์(๋งค๋ด์ผ ์ฐธ๊ณ )
๋ชจ๋ธ ๋ฐ์ธ๋ฉ์ ํฌํจํ ์ ๋์ฌ ๋ฐ ์์ฑ์ ์ง์ ํจ
๊ฐ๋ฅ
: ๋ฐ์ ์์ฒญ์ ์ฒ๋ฆฌํ ๋ ๋ฐ์ ๋ฐ์ดํฐ๊ฐ ์ด๋ค ํ์์ธ์ง ์ง์ ํจ
: ์๋ต์ ์ด๋ค ๋ฐ์ดํฐ ํ์์ ๋ณด๋ผ์ง ์ง์ ํจ