asp.net.core學習筆記1:swagger的使用和webapi接收Jobject對象

  環境:asp.net.core 3.1 (一覺醒來官方已經不推薦3.0了,於是沒有任何core經驗,也只能開始了3.1的開發學習)

  由於現有項目前後端分離、微服務化日趨流行,所以上手不採用web應用(razor頁面,mvc),直接使用webapi,也許後續的項目會採用SignalR做實時數據。迴歸正題,使用webapi常用的輔助工具swagger必須有姓名,好處就不說了,誰用誰知道。

  一、swagger的使用。網上相關教程(包括漢化等)較多,只簡述基本步驟,提供一些小技巧應用。

       1.在nuget管理器中添加Swashbuckle.AspNetCore包引用;

  2.添加service配置。在startup.cs中在ConfigureServices方法中添加swagger的服務配置代碼。注意配置xml的路徑和名稱,需要在項目屬性“生成”中配置名稱和地址。

1  services.AddSwaggerGen(c=> {
2                 c.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo { Title = "My API", Version = "v1" });
3                 c.IncludeXmlComments(System.IO.Path.Combine(System.AppContext.BaseDirectory, "API.xml"));
4             });

 

   3.添加swagger配置。在startup.cs中Configure中添加代碼配置應用程序。swagger的endpoint常規配置即可。

小技巧:將swagger的路由前綴置爲空,並將調試的啓動路徑設置爲index.html。由於是前後端分離,後端服務中不提供界面,設置爲index.html爲啓動路徑,可以在調試的第一時間打開swagger界面。

1         app.UseSwagger();
2             app.UseSwaggerUI(c =>
3             {
4                 c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
5                 c.RoutePrefix = "";
6             });

 

  二、Webapi接收jobject對象。json在api中的使用非常常見,但是core在api的請求中是不支持弱類型對象的,可以確定的是支持自定義類型和基礎數據類型。通常使用post發送一個json,如果json是api已經定義好的強類型,那麼core可以將json直接反序列化成自定義類型。但如果json的內容不固定,或不便於定義強類型,我們通常選擇是弱類型jobject,但是很遺憾的是3.0之前是不支持json反序列化jobject的。(3.0之前的core通常自定義一個模型綁定構建器和模型綁定方法,參考資料3)

       3.0之後添加了對jobject的優化支持,引用包 Microsoft.AspNetCore.Mvc.Newtonsoft,並在配置服務的時候對controller添加json的支持即可,如下:

  services.AddControllers().AddNewtonsoftJson();

  然後便可以在controll中添加post的api。

 

 

 

 

 

 有興趣的同志可以研究參考資料3,看看core1.1是如何實現模型綁定的(實踐過程中有瑕疵,不建議採用這種古早的方法)。

 

參考資料:

1.https://lbadri.wordpress.com/2014/11/23/web-api-model-binding-in-asp-net-mvc-6-asp-net-5/

2.https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-3.1&tabs=visual-studio

3.https://www.cnblogs.com/showmu/p/6264950.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章