使用 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("products")]
), 则将它追加到路径. 此示例不使用模板.
在下面的 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". 返回结果, 如下图.
来源: https://www.cnblogs.com/chillsrc/p/10697463.html