ASP.NET Core의 CRUD 작업
- 5분
피자 서비스는 피자 목록에 대한 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
사용자가 엔드포인트에 새 항목을 추가할 수 있게 하려면 POST
속성을 사용하여 [HttpPost]
작업을 구현해야 합니다. 항목(이 예에서는 피자)을 매개 변수로 메서드에 전달하면 ASP.NET Core는 엔드포인트로 전송되는 모든 애플리케이션/JSON을 채워진 .NET Pizza
개체로 자동 변환합니다.
다음 섹션에서 구현할 Create
메서드의 메서드 서명은 다음과 같습니다.
[HttpPost]
public IActionResult Create(Pizza pizza)
{
// This code will save the pizza and return a result
}
[HttpPost]
특성은 POST
메서드를 사용하여 http://localhost:5000/pizza
에 전송된 HTTP Create()
요청을 매핑합니다. Get()
메서드에서 본 것처럼 피자 목록을 반환하는 대신 이 메서드는 IActionResult
응답을 반환합니다.
IActionResult
는 클라이언트가 요청이 성공했는지를 알 수 있도록 해주고 새로 만든 피자의 ID를 제공합니다. IActionResult
는 표준 HTTP 상태 코드를 사용하므로 실행 중인 언어나 플랫폼에 관계없이 클라이언트와 쉽게 통합할 수 있습니다.
ASP.NET Core 동작 결과 |
HTTP 상태 코드 | 설명 |
---|---|---|
CreatedAtAction |
201 | 피자가 메모리 내 캐시에 추가되었습니다.accept HTTP 요청 헤더(기본적으로 JSON)에 정의된 대로 미디어 유형의 응답 본문에 피자가 포함됩니다. |
BadRequest 가 암시됩니다. |
400 | 요청 본문의 pizza 개체가 잘못되었습니다. |
다행히 ControllerBase
에는 적절한 HTTP 응답 코드 및 메시지를 만드는 유틸리티 메서드가 있습니다. 다음 연습에서는 이러한 메서드가 어떻게 작동하는지 확인할 수 있습니다.
PUT
인벤토리에서 피자를 수정하거나 업데이트하는 것은 구현한 POST 메서드와 유사하지만 [HttpPut]
특성을 사용하고 업데이트해야 하는 id
개체 외에 Pizza
매개 변수를 사용합니다.
[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
매개 변수만을 받습니다.
[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에서 이러한 네 가지 동작을 지원하는 방법을 보여 줍니다.