使用 ASP.NET Core MVC 创建 Web API(三)
使用 ASP.NET Core MVC 创建 Web API
使用 ASP.NET Core MVC 创建 Web API(一)
使用 ASP.NET Core MVC 创建 Web API(二)
十、添加 GetBookItem 方法
1) 在Visual Studio 2017中的“解决方案资源管理器”中双击打开BookController文件,添加Get方法的API。代码如下。
// GET: api/Book [HttpGet] public async Task<ActionResult<IEnumerable<Book>>> GetBookItems() { return await _context.Book.ToListAsync(); } // GET: api/Book/5 [HttpGet("{id}")] public async Task<ActionResult<Book>> GetBookItem(int id) { var bookItem = await _context.Book.FindAsync(id); if (bookItem == null) { return NotFound(); } return bookItem; }
2)
将上面的代码添加到BookController文件中后,会在ToListAsync方法下出现波浪线,
这时需要把
using Microsoft.EntityFrameworkCore;添加到文件开头。
3) 这两个方法实现两个 GET 终结点:
GET /api/book
GET /api/book/{id}
4) 在Visual Studio 2017中按F5,运行应用程序。然后在浏览器中分别调用两个终结点来测试应用。
5) 在浏览器中输入“http://localhost:5000/api/book”查询所有书籍信息,如下图。
6) 在浏览器中输入“http://localhost:5000/api/book/8”查询指定有书籍信息,如下图。
十一、路由和 URL 路径
[HttpGet]
属性表示响应 HTTP GET 请求的方法。 每个方法的 URL 路径构造如下所示:
- 在控制器的
Route
属性中以模板字符串开头:
namespace BookApi.Controllers { [Route("api/[controller]")] [ApiController] public class BookController : Controller { private readonly BookContext _context;
- 将
[controller]
替换为控制器的名称,按照惯例,在控制器类名称中去掉“Controller”后缀。 对于此示例,控制器类名称为“Book”控制器,因此控制器名称为“Book”。 ASP.NET Core 路由不区分大小写。 - 如果
[HttpGet]
属性具有路由模板(例如[HttpGet("Book")]
),则将它追加到路径。 此示例不使用模板。
在下面的 GetBookItem
方法中,"{id}"
是书籍信息的唯一标识符的占位符变量。 调用 GetBookItem
时,URL 中 "{id}"
的值会在 id
参数中提供给方法。
// GET: api/Book/5 [HttpGet("{id}")] public async Task<ActionResult<Book>> GetBookItem(int id) { var bookItem = await _context.Book.FindAsync(id); if (bookItem == null) { return NotFound(); } return bookItem; }
十二、测试 GetBookItems 方法
本教程使用 Rester 测试 Web API。
1) 安装Firefox的组件Rester
2) 在Visual Studio 2017中启动 Web 应用程序。
3) 打开Rester。
4) 创建新请求,将 HTTP 方法设置为“GET”,将请求 URL 设置为 http://localhost:5000/api/Book/24。如下图。
5) 选择“Send”。 返回结果,如下图。
相关文章
- Hbase到Solr同步常用操作
- 给VMware的虚拟机设置静态地址
- Jpa中设置OneToMany插入报异常解决办法
- 帮朋友招聘一位技术合伙人(合肥)
- 理解架构师的正确姿势
- 感恩、转变、改变——我的2016
- 意外关机引起 IntelliJ IDEA 报 org.jdom.input.JDOMParseException 异常的,解决办法
- C# 在Repeater 的ItemDataBound 如何转换e.Item.DataItem 的类型
- win2003 Enterprise x64 Edtion中的DCOM服务找不到WORD应用程序
- 真的够可以的,基于Netty实现了RPC框架
- Tampermonkey for Mac(油猴Safari浏览器插件) 4.17中文版
- Netflix 检测脚本合集,一键检测IP解锁范围及对应的的地区
- Flagger 在 Kubernetes 集群上是如何工作的?
- 网络编程学习笔记8-对netcat压力测试
- 网络编程学习笔记9-第一个netcat的实现(thread-per-connection)
- 靶机练习 - Tr0ll -2(提权)
- 靶机练习 - Tr0ll -1
- 靶机练习 - 温故知新 - Toppo(sudo 提权)
- 漏洞复现 -“核弹”漏洞-Log4j2 JNDI注入(CVE-2021-44228)
- 漏洞复现 - Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)