相信很多时候开发程序不是只有自己开发就可以了,不论是公司外还是公司内部都有打Api的需求,所以在之前那篇Api文件之後今天来谈谈如何在网页服务器中打Api沟通。
「前辈,我们要怎麽打Api跟第三方沟通阿。」
这天大头收到一个需求,是要跟第三方沟通交换数据,所以大头跟老K请教要如何跟第三方沟通。
「恩,土炮一点可以用HttpWebRequest或是WebClient来硬干。」
听到这里大头面有难色,因为这个需求还满赶的。而老K看到大头的表情後笑笑的跟他说。
「哈哈刚刚是开玩笑的,你来用用看RestSharp吧」
第一动还是不免俗的来设定环境,所以请输入以下指令。
dotnet add package RestSharp
安装好套件後接下来说明一下如何使用RestSharp。
由於已经习惯依赖注入的开发方式,所以接下来还是以依赖注入的方式来透过RestSharp来发起请求,所以程序开发部分的第一动还是先注入相依的元件,所以在Startup.ConfigureServices
加入以下程序来注入元件。
builder.RegisterType<RestSharp.RestClient>()
.AsImplementedInterfaces()
.InstancePerDependency();
注入完了之後在需求端的部分由建构子注入,并且设定连线的终端即可发起请求,如下列所示。
private readonly IRestClient _client = null;
public WeatherForecastController(ILogger<WeatherForecastController> logger,
IRestClient client)
{
_logger = logger;
_client = client;
}
接下来发起请求的方式如下。
_client.BaseUrl = new Uri("第三方api的url");
var request = new RestRequest("请求的方法", Method.GET);
var fetchResult = await _client.GetAsync<解析後的类别>(request);
如果只有这样使用的话根本不需要RestSharp,接下来如果有需要传递参数的话就透过以下方是传递。
request.AddParameter("param1", param2);
request.AddParameter("param2", param2);
再来如果遇到第三方需要传递header的话,例如走的是jwt的协定时,就透过以下方式传递。
request.AddHeaders("Key", value);
又或者想要简单一点的作法处理jwt协定可以直接使用Authenticator
,如下列方式。
_client.Authenticator = new RestSharp.Authenticators.JwtAuthenticator("token");
还有如果需求是抓取档案可以透过以下方法。
var request = new RestRequest("Assets/LargeFile.7z");
request.ResponseWriter = responseStream =>
{
using (responseStream)
{
responseStream.CopyTo(writer);
}
};
var response = _client.DownloadData(request);
最後常会遇到的问题是访问的网站是没有ssl凭证的可以透过以下方法来避免错误发生。
_client.RemoteCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
今天跟小光还有大头了解如何透过RestSharp跟第三方沟通,透过封装後的套件让跟第三方沟通的程序可以写得更便利,希望大家在处理呼叫第三方Api的开发可以更容易,让大家更专注在自己逻辑的开发。
<<: [DAY25] 用 Azure Machine Learning SDK 注册模型与部署
>>: [早餐吃到饱-6] JR Inn Sapporo #日本北海道
Single Number 黑魔法集合.... 题目连结:https://leetcode.com...
设定style属性 上一篇有提到我们可以在React.createElement的第二个参数设定Re...
哈罗!昨天使用 SWR 实作了一个小功能,让使用者可以列出某 Github user 的所有公开 r...
哈罗大家好~ 美好的礼拜五终於到了.... 明後天就有更多时间可以赶铁人赛了哈哈 (呜呜抱佛脚活该的...
=x= 🌵 NEWS 前台 List 页面後端功能制作。 NEWS List 页面资料介绍 : 📌 ...