中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Visual Studio 2019教程:如何將Web API添加到ASP.NET Core應用程序

發布時間:2020-03-09 13:56:53 來源:網絡 閱讀:862 作者:qq5d2d9e539cdbb 欄目:軟件技術

打開項目

在Visual Studio 2019中打開ASP.NET Core應用程序。

添加一個API控制器

右鍵單擊該項目,然后添加一個名為Api的新文件夾。然后,右鍵單擊此文件夾,然后選擇Add > New Scaffolded Item。使用Entity Framework選擇帶有操作的API Controller。現在選擇一個現有的模型類,然后單擊Add。

Visual Studio 2019教程:如何將Web API添加到ASP.NET Core應用程序

查看生成的控制器

生成的代碼包括一個新的控制器類。類定義的頂部是兩個屬性。

[Route("api/[controller]")]
[ApiController]public?class?GamesController?:?ControllerBase
  • 第一個指定這個控制器中動作的路由為api/[controller],這表示如果控制器名為GamesController,則路由為api/Games。

  • 第二個屬性[ApiController]向類添加了一些有用的驗證,比如確保每個action方法都包含自己的[Route]屬性。

public?class?GamesController?:?ControllerBase{????private?readonly?AppDbContext?_context;????public?GamesController(AppDbContext?context)????{
????????_context?=?context;
????}

控制器使用現有的AppDbContext,并傳遞到其構造函數中。每個操作都將使用此字段來處理應用程序的數據。

//?GET:?api/Games[HttpGet]public?IEnumerable<Game>?GetGame(){????return?_context.Game;
}

第一種方法是使用[HttpGet]屬性指定的簡單GET請求。它不帶任何參數,并返回數據庫中所有game的列表。

//?GET:?api/Games/5[HttpGet("{id}")]public?async?Task<IActionResult>?GetGame([FromRoute]?int?id){????if?(!ModelState.IsValid)
????{????????return?BadRequest(ModelState);
????}????var?game?=?await?_context.Game.FindAsync(id);????if?(game?==?null)
????{????????return?NotFound();
????}????return?Ok(game);
}

下一個方法指定路由中的{id},它將被添加到/之后的路由中,因此完整的路由將類似于api/Games/5,如頂部的注釋所示。該id輸入被映射到方法上的id參數。在方法內部,如果模型無效,則返回一個BadRequest結果。下載VS 2019否則,EF將嘗試查找與提供的id匹配的記錄。如果找不到,將返回NotFound結果,否則將返回相應的game記錄。

//?PUT:?api/Games/5
[HttpPut("{id}")]
public?async?Task<IActionResult>?PutGame([FromRoute]?int?id,?[FromBody]?Game?game)
{
????if?(!ModelState.IsValid)
????{
????????return?BadRequest(ModelState);
????}

????if?(id?!=?game.Id)
????{
????????return?BadRequest();
????}

????_context.Entry(game).State?=?EntityState.Modified;

????try
????{
????????await?_context.SaveChangesAsync();
????}
????catch?(DbUpdateConcurrencyException)
????{
????????if?(!GameExists(id))
????????{
????????????return?NotFound();
????????}
????????else
????????{
????????????throw;
????????}
????}

????return?NoContent();
}

接下來,使用[HttpPut]對API的請求來執行更新。新Game記錄在請求的正文中提供。執行一些驗證和錯誤檢查,如果一切順利,數據庫中的記錄將使用請求體中提供的值進行更新。否則,將返回適當的錯誤響應。

//?POST:?api/Games
[HttpPost]
public?async?Task<IActionResult>?PostGame([FromBody]?Game?game)
{
????if?(!ModelState.IsValid)
????{
????????return?BadRequest(ModelState);
????}

????_context.Game.Add(game);
????await?_context.SaveChangesAsync();

????return?CreatedAtAction("GetGame",?new?{?id?=?game.Id?},?game);
}

一個[HttpPost]請求用于向系統添加新記錄。與[HttpPut]一樣,記錄被添加到請求的正文中。如果有效,則EF Core將記錄添加到數據庫中,并且該操作將返回更新后的記錄(帶有數據庫生成的ID)和一個指向API記錄的鏈接。

//?DELETE:?api/Games/5
[HttpDelete("{id}")]
public?async?Task<IActionResult>?DeleteGame([FromRoute]?int?id)
{
????if?(!ModelState.IsValid)
????{
????????return?BadRequest(ModelState);
????}

????var?game?=?await?_context.Game.FindAsync(id);
????if?(game?==?null)
????{
????????return?NotFound();
????}

????_context.Game.Remove(game);
????await?_context.SaveChangesAsync();

????return?Ok(game);
}

最后,[HttpDelete]使用帶有ID 的路由來刪除記錄。如果請求有效,并且存在具有給定ID的記錄,那么EF Core從數據庫中將其刪除。

添加Swagger

Swagger是一個API文檔和測試工具,可以作為一組服務和中間件添加到ASP.NET Core應用程序中。要做到這一點,請先右鍵單擊該項目,然后選擇Manage NuGet Packages。單擊Browse,搜索Swashbuckle.AspNetCore并安裝相應的軟件包。

Visual Studio 2019教程:如何將Web API添加到ASP.NET Core應用程序

安裝后,打開Startup.cs并將以下內容添加到ConfigureServices方法的末尾:

services.AddSwaggerGen(c?=>
{
????c.SwaggerDoc("v1",?new?Info?{?Title?=?"My?API",?Version?=?"v1"?});
});

同時,還需要在文件的頂部添加Swashbuckle.AspNetCore.Swagger。

接下來,在UseMvc之前,在Configure方法中添加以下內容:

//?Enable?middleware?to?serve?generated?Swagger?as?a?JSON?endpoint.
app.UseSwagger();

//?Enable?middleware?to?serve?swagger-ui?(HTML,?JS,?CSS,?etc.),?
//?specifying?the?Swagger?JSON?endpoint.
app.UseSwaggerUI(c?=>
{
????c.SwaggerEndpoint("/swagger/v1/swagger.json",?"My?API?V1");
});

現在您應該能夠構建和運行應用程序了。

在瀏覽器中,導航到/swagger地址欄中的,應該看到應用程序的API端點和模型的列表。

Visual Studio 2019教程:如何將Web API添加到ASP.NET Core應用程序

點擊Games下的一個端點,嘗試執行它,查看不同端點的行為。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

固原市| 疏附县| 界首市| 古蔺县| 安泽县| 四平市| 科尔| 招远市| 南宫市| 青铜峡市| 灵川县| 孟津县| 三都| 青岛市| 吉林市| 弥勒县| 长治市| 齐齐哈尔市| 贺州市| 兴义市| 永平县| 六枝特区| 乡宁县| SHOW| 大港区| 望谟县| 县级市| 甘孜县| 洱源县| 蓬溪县| 南京市| 垣曲县| 遵义县| 友谊县| 定西市| 新田县| 青田县| 宁陕县| 高安市| 营山县| 昌黎县|