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