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, PUTDELETE 작업에 대해 자세히 알아보겠습니다.

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에서 이러한 네 가지 동작을 지원하는 방법을 보여 줍니다.

지식 확인

1.

제품의 이름을 업데이트해야 한다고 가정합니다. 이 요청에 가장 적합한 HTTP 동작 동사는 무엇인가요?

2.

어떤 시나리오에서 HTTP 404 상태 코드를 반환하는 것이 가장 적절하며, ASP.NET Core에서 어떻게 구현할 수 있나요?