ASP.NET Core WebAPI Get Post Put Delete

HTTP 操作谓词CRUD 操作ASP.NET Core 属性
GET读取[HttpGet]
POST创建[HttpPost]
PUT更新[HttpPut]
DELETE删除[HttpDelete]

 

GET 获取数据

获取全部数据

[HttpGet]
public ActionResult<List<Pizza>> GetAll() =>
    PizzaService.GetAll();
  • 查询服务以获取所有披萨,并通过 Content-Type 的值 application/json 自动返回数据。

获取单个实例

[HttpGet("{id}")]
public ActionResult<Pizza> Get(int id)
{
    var pizza = PizzaService.Get(id);

    if(pizza == null)
        return NotFound();

    return pizza;
}
  • 要求 pizza/ 之后的 URL 段中包含 id 参数的值。 请记住,控制器级别的 /pizza 属性定义了 [Route] 模式。
  • 查询数据库以获取与所提供的 id 参数匹配的披萨。

上述操作中使用的每个 ActionResult 实例都映射到下表中对应的 HTTP 状态代码:

ASP.NET Core
操作结果
HTTP 状态代码说明
Ok 为隐式200内存中缓存中存在与所提供的 id 参数匹配的产品。
该产品包含在由 accept HTTP 请求标头中所定义的媒体类型(默认情况下为 JSON)的响应正文中。
NotFound404内存中缓存中不存在与所提供的 id 参数匹配的产品。

POST 新添

[HttpPost]
public IActionResult Create(Pizza pizza)
{            
    PizzaService.Add(pizza);
    return CreatedAtAction(nameof(Create), new { id = pizza.Id }, pizza);
}

CreatedAtAction 方法调用中的第一个参数表示操作名称。 nameof 关键字用于避免对操作名称进行硬编码。 CreatedAtAction 使用操作名称来生成 location HTTP 响应标头,该标头包含新创建的披萨的 URL

 此方法并不像我们在 Get() 方法中看到的那样返回披萨列表,而是返回 IActionResult 响应。IActionResult 可让客户端知道请求是否成功,并提供新创建的披萨的 ID。 IActionResult 通过使用标准 HTTP 状态代码来完成该操作,因此,无论客户端使用哪种语言或者在哪个平台上运行,它都能轻松地与客户端集成。

ASP.NET Core
操作结果
HTTP 状态代码说明
CreatedAtAction201已将披萨添加到内存中缓存。
该披萨包含在由 accept HTTP 请求标头中所定义的媒体类型(默认情况下为 JSON)的响应正文中。
BadRequest 为隐式400请求正文的 pizza 对象无效。

PUT 修改

[HttpPut("{id}")]
public IActionResult Update(int id, Pizza pizza)
{
    if (id != pizza.Id)
        return BadRequest();
           
    var existingPizza = PizzaService.Get(id);
    if(existingPizza is null)
        return NotFound();
   
    PizzaService.Update(pizza);           
   
    return NoContent();
}
  • 要求 pizza/ 之后的 URL 段中包含 id 参数的值。
  • 返回 IActionResult,因为在运行时之前,ActionResult 返回类型未知。 BadRequestNotFound 和 NoContent 方法分别返回 BadRequestResultNotFoundResult 和 NoContentResult 类型。
  • 由于控制器批注通过 [ApiController] 属性进行,因此暗示着将在请求正文中找到 Pizza 参数。
ASP.NET Core
操作结果
HTTP 状态代码说明
NoContent204已在内存中缓存中更新了披萨。
BadRequest400请求正文的 Id 值与路由的 id 值不匹配。
BadRequest 为隐式400请求正文的 Pizza 对象无效。

DELETE 删除

[HttpDelete("{id}")]
public IActionResult Delete(int id)
{
    var pizza = PizzaService.Get(id);
   
    if (pizza is null)
        return NotFound();
       
    PizzaService.Delete(id);
   
    return NoContent();
}
  • 要求 pizza/ 之后的 URL 段中包含 id 参数的值。
  • 返回 IActionResult,因为在运行时之前,ActionResult 返回类型未知。 NotFound 和 NoContent 方法分别返回 NotFoundResult 和 NoContentResult 类型。
ASP.NET Core
操作结果
HTTP 状态代码说明
NoContent204已从内存中缓存中删除了披萨。
NotFound404内存中缓存中不存在与所提供的 id 参数匹配的披萨。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值