ASP.NET Core의 CRUD 작업
피자 서비스는 피자 목록에 대한 CRUD 작업을 지원합니다. 이러한 작업은 ASP.NET Core 특성을 통해 매핑되는 HTTP 동사를 통해 수행됩니다. 확인했듯이, HTTP GET
동사는 서비스에서 하나 이상의 항목을 검색하는 데 사용됩니다. 이러한 동작에는 [HttpGet]
특성이 주석으로 지정됩니다.
다음 표는 피자 서비스에 대해 구현하는 네 가지 작업의 매핑을 보여줍니다.
HTTP 동작 동사 | CRUD 작업 | ASP.NET Core 특성 |
---|---|---|
GET |
읽기 | [HttpGet] |
POST |
생성 | [HttpPost] |
PUT |
엽데이트 | [HttpPut] |
DELETE |
삭제 | [HttpDelete] |
GET
작업이 작동하는 방식을 이미 확인했습니다. POST
, PUT
및 DELETE
작업에 대해 자세히 알아보겠습니다.
POST
사용자가 엔드포인트에 새 항목을 추가할 수 있게 하려면 [HttpPost]
속성을 사용하여 POST
작업을 구현해야 합니다. 항목(이 예에서는 피자)을 매개 변수로 메서드에 전달하면 ASP.NET Core는 엔드포인트로 전송되는 모든 애플리케이션/JSON을 채워진 .NET Pizza
개체로 자동 변환합니다.
다음 섹션에서 구현할 Create
메서드의 메서드 서명은 다음과 같습니다.
[HttpPost]
public IActionResult Create(Pizza pizza)
{
// This code will save the pizza and return a result
}
[HttpPost]
특성은 Create()
메서드를 사용하여 http://localhost:5000/pizza
에 전송된 HTTP POST
요청을 매핑합니다. Get()
메서드에서 본 것처럼 피자 목록을 반환하는 대신 이 메서드는 IActionResult
응답을 반환합니다.
IActionResult
는 클라이언트가 요청이 성공했는지를 알 수 있도록 해주고 새로 만든 피자의 ID를 제공합니다. IActionResult
는 표준 HTTP 상태 코드를 사용하므로 실행 중인 언어나 플랫폼에 관계없이 클라이언트와 쉽게 통합할 수 있습니다.
ASP.NET Core 동작 결과 |
HTTP 상태 코드 | 설명 |
---|---|---|
CreatedAtAction |
201 | 피자가 메모리 내 캐시에 추가되었습니다.accept HTTP 요청 헤더(기본적으로 JSON)에 정의된 대로 미디어 유형의 응답 본문에 피자가 포함됩니다. |
BadRequest 가 암시됩니다. |
400 | 요청 본문의 pizza 개체가 잘못되었습니다. |
다행히 ControllerBase
에는 적절한 HTTP 응답 코드 및 메시지를 만드는 유틸리티 메서드가 있습니다. 다음 연습에서는 이러한 메서드가 어떻게 작동하는지 확인할 수 있습니다.
PUT
인벤토리에서 피자를 수정하거나 업데이트하는 것은 구현한 POST 메서드와 유사하지만 [HttpPut]
특성을 사용하고 업데이트해야 하는 Pizza
개체 외에 id
매개 변수를 사용합니다.
[HttpPut("{id}")]
public IActionResult Update(int id, Pizza pizza)
{
// This code will update the pizza and return a result
}
앞의 작업에 사용된 각각의 ActionResult
인스턴스는 다음 표의 해당 HTTP 상태 코드로 매핑됩니다.
ASP.NET Core 동작 결과 |
HTTP 상태 코드 | 설명 |
---|---|---|
NoContent |
204 | 피자가 메모리 내 캐시에서 업데이트되었습니다. |
BadRequest |
400 | 요청 본문의 Id 값이 경로의 id 값과 일치하지 않습니다. |
BadRequest 가 암시됩니다. |
400 | 요청 본문의 Pizza 개체가 잘못되었습니다. |
DELETE
구현하기 쉬운 작업 중 하나는 메모리 내 캐시에서 제거하기 위해 피자의 id
매개 변수만 사용하는 DELETE
작업입니다.
[HttpDelete("{id}")]
public IActionResult Delete(int id)
{
// This code will delete the pizza and return a result
}
앞의 작업에 사용된 각각의 ActionResult
인스턴스는 다음 표의 해당 HTTP 상태 코드로 매핑됩니다.
ASP.NET Core 동작 결과 |
HTTP 상태 코드 | 설명 |
---|---|---|
NoContent |
204 | 피자가 메모리 내 캐시에서 삭제되었습니다. |
NotFound |
404 | 제공된 id 매개 변수와 일치하는 피자는 메모리 내 캐시에 존재하지 않습니다. |
다음 단원의 연습에서는 웹 API에서 이러한 네 가지 동작을 지원하는 방법을 보여 줍니다.