日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

声明式RESTful客户端在asp.net core中的应用

發布時間:2023/12/4 asp.net 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 声明式RESTful客户端在asp.net core中的应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 聲明式RESTful客戶端

聲明式服務調用的客戶端,常見有安卓的Retrofit、SpringCloud的Feign等,.net有Refit和WebApiClient,這些客戶端都是以java或.net某個語言來聲明接口,描述如何請求RESTful api。

1.1 WebApiClient

WebApiClient由c#開發,但適用于任意.net語言,包括c#、vb.net、f#等項目,其提供兩個nuget包:WebApiClient.JIT和WebApiClient.AOT,均支持.net framework4.5、.NET Standard 1.3?。

WebApiClient.JIT

在運行時使用Emit創建Http請求接口的代理類,HttpApiClient.Create

  • 可以在項目中直接引用WebApiClient.JIT.dll就能使用;

  • 不適用于不支持JIT技術的平臺(IOS、UWP);

  • 接口要求為public;

WebApiClient.AOT

在編譯過程中使用Mono.Cecil修改編譯得到的程序集,向其插入Http請求接口的代理類IL指令,這一步是在AOT編譯階段之前完成。代理類型所在的程序集、模塊、命名空間與接口類型的一樣,其名稱為$前綴的接口類型名稱,使用反編譯工具查看項目編譯后的程序集可以看到這些代理類。

  • 項目必須使用nuget安裝WebApiClient.AOT才能正常使用;

  • 沒有JIT,支持的平臺廣泛;

  • 接口不要求為public,可以嵌套在類里面;

1.2 Refit

Refit是一個開發很早的項目,在github有很高的人氣,由c#開發,目前僅支持c#語言項目,支持.NET Standard 1.4,.net framework需要4.6.1得以支持。

Refit的內部實現與WebApiClient.AOT有相似之處,都是在編譯階段向聲明接口項目插入接口實現類的代碼或IL指令,我們可以稱之為靜態代理的編譯時織入。Refit使用Microsoft.CodeAnalysis.CSharp來分析接口語法,編譯前補充生成接口的代理類代碼用來與項目代碼一起編譯。

2 WebApiClient的聲明式接口

WebApiClient支持GET/HEAD、PUT/POST/DELETE、PATCH請求方法,請求內容體支持json、xml、multipart/form-data、application/x-www-form-urlencoded和自定義無結構內容等,其聲明式接口風格與asp.net core的接口聲明非常相似。

2.1 接口聲明

遠程服務asp.net core接口示例

WebApiClient聲明式調用接口


3 WebApiClient與DI結合

在asp.net core環境中,我們可以使用WebApiClient.Extensions項目簡單WebApiClient的DI的配置,目前有DependencyInjection和HttpClientFactory的擴展等。

3.1 WebApiClient.Extensions.DependencyInjection

引入nuget包

PM> install-package WebApiClient.Extensions.DependencyInjection

Startup相關配置

// This method gets called by the runtime. Use this method to add services to the container.public void ConfigureServices(IServiceCollection services) {services.AddHttpApi<IUsersApi>().ConfigureHttpApiConfig((c,p) =>{c.HttpHost = new Uri("https://localhost:5001/");c.FormatOptions.DateTimeFormat = "yyyy-MM-dd HH:mm:ss.fff";c.LoggerFactory = p.GetRequiredService<ILoggerFactory>();});... }

Controller

3.2 WebApiClient.Extensions.HttpClientFactory

引入nuget包

PM> install-package WebApiClient.Extensions.HttpClientFactory

Startup相關配置

4 總結

本文講解了聲明式客戶端的概念、列表幾個聲明式客戶端項目,同時講解聲明式客戶端WebApiClient在asp.net core項目中的簡單使用,有關更多高級的應用,可以到WebApiClient的github上查看相關wiki。

原文地址https://www.cnblogs.com/kewei/p/9786319.html

.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

總結

以上是生活随笔為你收集整理的声明式RESTful客户端在asp.net core中的应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。