使用 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] publicasync 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”。 返回結果,如下圖。
使用 ASP.NET Core MVC 創建 Web API(三)