在上面的代码中我们模仿了一个Post请求,请求完成今后我们再利用ReadAsAsync的要领来异步吸收别的一个域中的数据,然后我们按照返回的StatusCode来抛出差异的错误提示,并记录相关的日志信息并返回最终Post请求的功效,进而完成整个进程,在这其中间我们发送请求的时候需要留意一下内容:1 最终的完整版地点=BaseAddress+RelativeAddress,基地点是在appsetting.json中举办设置的,RelativeAddress是我们请求差异域的时候的相对地点,这个需要我们按照实际的业务来举办设置。2 请求的工具是我们将数据工具序列化成json后的功效,这两点需要出格留意。
1.4 总结通过上面的报告我们知道了如何完整的建设HttpClient以及通过建设的HttpClient如何收发数据,但同时我们也发明白通过上面的方法我们的缺点:假如一个业务中有大量的这种跨域请求整个代码显得很是臃肿而且由于差异开拓人员的认知差异最终导致很容易出问题,那么我们是否有步伐可以或许去办理上面的问题呢?Refit库的呈现正好办理了这个问题,Refit通过这种申明式的方法可以或许很洪流平上让代码越发简洁明白并且提供了越发富厚的成果。
二 利用Refit来建设HttpClient工具 2.1 引入Refit包在我们的项目中我们可以通过 <PackageReference Include="Refit" Version="XXX" />来快速引用Refit包,引用的方法这里便不再赘述。
2.2 界说接口我们将我们业务中涉及到的要领界说在一个接口中,就像下面这样。
public interface IDmsAfterSalesApi { [Headers("User-Agent: Dms-Parts")] [Post("/internal/api/v1/customerAccounts/update")] Task<ResponseBody> UpdateCustomerAmount([Body]PartRetailSettlementModel input); [Headers("User-Agent: Dms-Parts")] [Post("/internal/api/v1/repairShortagePart/checkCustomerAccount")] Task<RepairShortagePartResponseBody> RepairShortagePartCheckCustomerAccount([Body]RepairShortagePartModel input); [Headers("User-Agent: Dms-Parts")] [Post("/internal/api/v1/vehiclesAndMemberCode/forCoupons")] Task<GetMemberCodeBrandCodeForVehicleBody> GetMemberCodeBrandCodeForVehicle(Guid vehicleId); }
2.3 注入接口并利用接口中的要领