实现ASP.NET Core WEB API中的 CRUD 操作

添加

使用 POST 方法可通过 Web API 添加

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

上一个操作:

仅响应 HTTP POST 谓词,如 [HttpPost] 属性所示。
将请求正文的 Pizza 对象插入到内存中缓存。

备注:
由于控制器使用 [ApiController] 属性进行批注,因此意味着将在请求正文中找到 Pizza 参数。
CreatedAtAction 方法调用中的第一个参数表示操作名称。 nameof 关键字用于避免对操作名称进行硬编码。 CreatedAtAction 使用操作名称来生成 location HTTP 响应标头,该标头包含新创建的披萨的 URL,如上一个单元中介绍。

修改

使用 PUT 方法可通过 Web API 更新。

[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();
}

上一个操作:

仅响应 HTTP PUT 谓词,如 [HttpPut] 属性所示。
要求 pizza/ 之后的 URL 段中包含 id 参数的值。
返回 IActionResult,因为在运行时之前,ActionResult 返回类型未知。 BadRequest、NotFound 和 NoContent 方法分别返回 BadRequestResult、NotFoundResult 和 NoContentResult 类型。

备注:
由于控制器批注通过 [ApiController] 属性进行,因此暗示着将在请求正文中找到 Pizza 参数。

删除

使用 DELETE 方法可通过 Web API 删除

[HttpDelete("{id}")]
public IActionResult Delete(int id)
{
    var pizza = PizzaService.Get(id);
   
    if (pizza is null)
        return NotFound();
       
    PizzaService.Delete(id);
   
    return NoContent();
}

上一个操作:

仅响应 HTTP DELETE 谓词,如 [HttpDelete] 属性所示。
要求 pizza/ 之后的 URL 段中包含 id 参数的值。
返回 IActionResult,因为在运行时之前,ActionResult 返回类型未知。 NotFound 和 NoContent 方法分别返回 NotFoundResult 和 NoContentResult 类型。
查询内存中缓存以获取与所提供的 id 参数匹配的数据。

生成并运行完成的 Web API

运行以下命令,生成并启动 Web API:
dotnet run
重新打开现有 httprepl 终端,或者通过从主菜单中选择“终端”>“新终端”,从 Visual Studio Code 中打开新的集成终端。

如果打开了新终端,请通过运行以下命令连接到 Web API:
httprepl https://localhost:{PORT}

或者,在 HttpRepl 运行时随时运行以下命令:
(Disconnected)> connect https://localhost:{PORT}

运行以下命令以转到 Pizza 终结点:
cd Pizza

运行以下命令,查看对 API 执行的新操作:
ls

前面的命令将显示 Pizza 终结点的可用 API 的输出:
https://localhost:7247/Pizza> ls
. [GET|POST]
… []
{id} [GET|PUT|DELETE]

使用以下命令发出 POST 请求,在 HttpRepl 中添加新的数据:
post -c “{“name”:“Hawaii”, “isGlutenFree”:false}”

前面的命令将返回所有数据的列表:
HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8
Date: Fri, 02 Apr 2021 23:23:09 GMT
Location: https://localhost:7247/Pizza?id=3
Server: Kestrel
Transfer-Encoding: chunked

{
“id”: 3,
“name”: “Hawaii”,
“isGlutenFree”: false
}

使用以下命令发出 PUT 请求,将新的 Hawaii 更新为 Hawaiian :
put 3 -c “{“id”: 3, “name”:“Hawaiian”, “isGlutenFree”:false}”
前面的命令将返回以下输出,指示操作成功:
HTTP/1.1 204 No Content
Date: Fri, 02 Apr 2021 23:23:55 GMT
Server: Kestrel

若要验证披萨是否已更新,可以使用以下命令重新运行 GET 操作:
get 3

前面的命令将返回新更新的披萨:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Fri, 02 Apr 2021 23:27:37 GMT
Server: Kestrel
Transfer-Encoding: chunked

{
“id”: 3,
“name”: “Hawaiian”,
“isGlutenFree”: false
}

如果运行以下命令,我们的 API 还可以通过 DELETE 操作删除新创建的披萨:
delete 3

前面的命令将返回表示成功的 204 No Content 结果:
HTTP/1.1 204 No Content
Date: Fri, 02 Apr 2021 23:30:04 GMT
Server: Kestrel

若要验证是否已删除,可以使用以下命令重新运行 GET 操作:
get

前面的命令将返回原始数据作为结果:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Fri, 02 Apr 2021 23:31:15 GMT
Server: Kestrel
Transfer-Encoding: chunked

[
{
“id”: 1,
“name”: “Classic Italian”,
“isGlutenFree”: false
},
{
“id”: 2,
“name”: “Veggie”,
“isGlutenFree”: true
}
]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值