๐ŸชŸ
ASP.NET Core
WebAPI ServerASP.NET CoreMain Subject
  • Intro
  • Program.cs
  • Dependency Injection
  • Host
  • MVC
  • Middleware
  • Model Binding
  • Controller
  • Configure
  • Logging
  • Library
    • WebApplicationzBuilder
  • Example Code
    • basic01
    • basic02
    • basic03
    • basic04
    • basic05
    • basic06
    • basic07
Powered by GitBook
On this page
  • ์˜๋ฏธ
  • ControllerBase ํด๋ž˜์Šค
  • Attribute
  • [ApiController]
  • ๋ผ์šฐํŒ… [Route("[controller]")]
  • Http verb templates
  • [Consumes], [Produces]
  • [Bind]
  • ์ฐธ๊ณ  ๋ฌธํ—Œ

Controller

PreviousModel BindingNextConfigure

Last updated 1 year ago

์˜๋ฏธ

  • HTTP Request๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์ค„ ๊ฒƒ์ธ์ง€ ์ •์˜ํ•จ

ControllerBase ํด๋ž˜์Šค

  • Controller๊ฐ€ ์š”์ฒญ์„ ๋ฐ›๊ณ  ์‘๋‹ต์„ ๋งŒ๋“ค์–ด์ฃผ๋Š” ํด๋ž˜์Šค

  • ์™ ๋งŒํ•œ ๊ฒƒ์€ ์ด ํด๋ž˜์Šค ์•ˆ์— ๋‹ค ๋“ค์–ด์žˆ์Œ

  • ๋‚ด๊ฐ€ ์›ํ•˜๋Š” Controller๋ฅผ ๋งŒ๋“ค์–ด์ค„ ๋•Œ ์ด ํด๋ž˜์Šค๋ฅผ ์ƒ์† ๋ฐ›์•„์„œ ๋‚ด์žฅ๋œ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ปค์Šคํ…€ ํ•ด์ฃผ๋ฉด ๋จ

  • ๊ธฐ๋Šฅ : ์ƒํ™ฉ๋ณ„ ์‘๋‹ต์ƒ์„ฑ(200, 300, 400 status code), ํŒŒ์ผ ๋ฐ˜ํ™˜, ๋ชจ๋ธ ์—…๋ฐ์ดํŠธ, ๋ชจ๋ธ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ

  • Controller ํด๋ž˜์Šค

    • ControllerBase๋ฅผ ์ƒ์†๋ฐ›์•„ View์˜ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•œ ํด๋ž˜์Šค์ž„

    • MVC model์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹์Œ

    • WebAPI ์„œ๋ฒ„์—์„œ๋Š” View์˜ ๊ธฐ๋Šฅ์€ ํ•„์š” ์—†์œผ๋‹ˆ ControllerBase๋ฅผ ์ƒ์†๋ฐ›์•„ ์‚ฌ์šฉํ•˜๋ฉด ๋จ

Attribute

[ApiController]

  • ์ด ์†์„ฑ์€ ์ปจํŠธ๋กค๋Ÿฌ ํด๋ž˜์Šค์— ์ ์šฉํ•˜์—ฌ HTTP API ์‘๋‹ต์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ๋™์ž‘์„ ํ•  ์ˆ˜ ์žˆ์Œ

  • ์ด ์†์„ฑ์„ ์ ์šฉํ•œ ์ปจํŠธ๋กค๋Ÿฌ ํด๋ž˜์Šค ์ด๋ฆ„์—๋Š” ๋’ค์— Controller ๋ฅผ ๋ถ™์ด๋Š” ๊ฒƒ์ด ๊ด€์Šต (์˜ˆ์ „ ๋ฒ„์ „์—์„œ๋Š” ํ•„์ˆ˜์˜€์Œ)

๋ผ์šฐํŒ… [Route("[controller]")]

[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
  • Route("...") ์•ˆ์— [controller]๋ฅผ ์“ฐ๋ฉด, class ์ด๋ฆ„์—์„œ Controller๋ฅผ ๋บ€ ์•ž์ชฝ์˜ ๋‹จ์–ด๋ฅผ ๊ทธ๋Œ€๋กœ ์ ์šฉํ•˜๊ฒŒ ๋จ. "..."์— ์›ํ•˜๋Š” ๋ฌธ์ž๋ฅผ ์ ์–ด์ค„์ˆ˜๋„ ์žˆ์Œ

  • ๋Œ€/์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Œ

  • ๊ณ„์ธต์ ์œผ๋กœ ๊ตฌ์„ฑํ•ด์ค„ ์ˆ˜ ์žˆ์Œ. class๋ฅผ Route๋กœ ๊ฐ์‹ธ๊ณ , ์•ก์…˜์„ ๋˜ ๋ผ์šฐํŠธ๋กœ ๊ฐ์‹ธ๋ฉด ๊ณ„์ธต์ ์œผ๋กœ ์„ค์ •๋จ

    [Route("Home")]
    public class HomeController : Controller
    {
        [Route("")]
        [Route("Index")]
        [Route("/")]
        public IActionResult Index()
        {
            return ControllerContext.MyDisplayRouteInfo();
        }
    
        [Route("About")]
        public IActionResult About()
        {
            return ControllerContext.MyDisplayRouteInfo();
        }
    }
  • ์š”์ฒญ ๋ฐ์ดํ„ฐ(๋งค๊ฐœ๋ณ€์ˆ˜)๊ฐ€ ์–ด๋””์— ๋‹ด๊ฒจ์˜ฌ์ง€์— ๋Œ€ํ•œ ์ •๋ณด

    • Action ๋ฉ”์†Œ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ์•ž์— ์†์„ฑ์„ ๋ถ™์—ฌ์ค„ ์ˆ˜ ์žˆ์Œ [HttpPost] public IActionResult Action3([FromBody] Product product, [FromBody] Order order)

    ์šฐ์„ ์ˆœ์œ„
    Attribute
    Binding source

    1

    [FromBody]

    ์š”์ฒญ ๋ณธ๋ฌธ. JSON ๊ฐ™์€ ๋ณตํ•ฉ ํ˜•์‹ ์ •๋ณด

    2

    [FromForm]

    ์š”์ฒญ ๋ณธ๋ฌธ์—์„œ์˜ form data

    3

    [FromRoute]

    ์š”์ฒญ ๊ฒฝ๋กœ ๋ฐ์ดํ„ฐ(URI)

    4

    [FromQuery]

    ์š”์ฒญ ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด ๋งค๊ฐœ๋ณ€์ˆ˜(URI?key=val)

    5

    [FromHeader]

    ์š”์ฒญ ํ—ค๋”

    6

    [FromServices]

    ์ž‘์—… ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ์‚ฝ์ž…๋œ ์š”์ฒญ ์„œ๋น„์Šค

    7

    [AsParameters]

    ๋ฉ”์„œ๋“œ ๋งค๊ฐœ๋ณ€์ˆ˜

Http verb templates

  • ๋™์ผํ•œ route์™€ ๋™์ผํ•œ verb์— ๋Œ€ํ•ด์„œ๋Š” ํ•œ๊ฐœ์˜ ์ปจํŠธ๋กค๋Ÿฌ ๋ฉ”์†Œ๋“œ๋งŒ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ์Œ

  • [HttpGet] [HttpGet("{id}")]

    • GET ์š”์ฒญ์‹œ ์ด ์†์„ฑ์ด ๋ถ™์€ ์•ก์…˜์„ ์‹คํ–‰ํ•จ

    • route/{id} ์˜ id๊ฐ’์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

  • [HttpPost]

  • [HttpPut]

  • [HttpDelete]

  • [HttpHead]

  • [HttpPatch]

  • ๋ชจ๋“  ํ…œํ”Œ๋ฆฟ์€ routeํ…œํ”Œ๋ฆฟ์ด๋ฉฐ, ๊ฐ ํ…œํ”Œ๋ฆฟ๋ณ„๋กœ ์†์„ฑ์„ ๊ฐ–๊ณ  ์žˆ์Œ(๋งค๋‰ด์–ผ ์ฐธ๊ณ )

[Consumes], [Produces]

  • [HttpPost]
    [Consumes("application/xml")]
    public IActionResult CreateProduct(Product product)
  • [Produces(MediaTypeNames.Application.Json)]
    [Route("[controller]")]
    public class PetsController : MyControllerBase
  • ๋ชจ๋ธ ๋ฐ”์ธ๋”ฉ์— ํฌํ•จํ•  ์ ‘๋‘์‚ฌ ๋ฐ ์†์„ฑ์„ ์ง€์ •ํ•จ

์ฐธ๊ณ  ๋ฌธํ—Œ

๊ฐ€๋Šฅ

: ๋ฐ›์€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ค ํ˜•์‹์ธ์ง€ ์ง€์ •ํ•จ

: ์‘๋‹ต์— ์–ด๋–ค ๋ฐ์ดํ„ฐ ํ˜•์‹์„ ๋ณด๋‚ผ์ง€ ์ง€์ •ํ•จ

(๋งค๋‰ด์–ผ)
๊ทœ์น™๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…
Binding source parameter inference
๋งค๋‰ด์–ผ
๋งค๋‰ด์–ผ
Consumes
Produces
[Bind]
MS Docs