【发布时间】:2019-03-25 02:55:32
【问题描述】:
我正在创建一个 API,作为应用程序和其他 2 个 API 之间的桥梁。我想知道最好的方法是什么。我正在使用 HttpClient。该应用程序有近一千个用户,所以如果我使用同步调用,这是否意味着如果用户调用 API,那么其他用户必须等到第一个用户得到响应才能继续处理其他 API 请求?有没有更好的方法来做这样的 API?
这是我使用同步的代码示例:
[HttpGet]
[Route("api/apiname")]
public String GetNumberofP([FromUri]GetNumberofPRequest getNPRequest){
var request = JsonConvert.SerializeObject(getNPRequest);
string errorMessage = "";
try{
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.gettoken());
var response = httpClient.GetAsync("api/MobileApp/GetNumberP?"
+ "strCardNumber=" + getNPRequest.strCardNumber
+ "&strDateOfBirth=" + getNPRequest.strDateOfBirth).Result;
return response;
}
catch (Exception e){
throw utils.ReturnException("GetNumberofP", e, errorMessage);
}
}
【问题讨论】:
-
将同步调用转换为异步调用总是很容易,但反之则充满危险。你应该让你的 API 异步。
-
另外
catch (Exception e)是一个糟糕的反模式。您应该只捕获您可以有意义处理的特定异常。 -
这真的取决于。虽然编写代码需要遵循一些规则,以便于代码的维护。但设计模式不是圣经。
标签: c# asp.net-web-api httpclient