使用 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”。 返回结果,如下图。