請原諒我的無知,我是撰寫和使用 ASP.Net Core Web API 的新手。
我有一個具有 MVC 架構的 Web 專案。控制器呼叫 web api 來獲取資料。
這是我到目前為止所擁有的:
using (var response = await _httpClient.GetAsync($"{_apiSettings.Value.BaseURL}/authors/{id}"))
{
if (response.IsSuccessStatusCode)
{
var apiResponse = await response.Content.ReadAsStringAsync();
var authorData = JsonSerializer.Deserialize<AuthorDTO>(apiResponse);
authorForm = _mapper.Map<AuthorViewModel>(authorData);
}
else
{
// What do I do here?
}
}
// more stuff down here to get to view...
如您所見,當我沒有從 API 呼叫中獲得 200 代碼時,我不確定會發生什么。
[編輯]
有沒有辦法傳遞相同的 HTTP 回應代碼?這是一個壞主意,因為該資訊不應該傳遞給用戶嗎?
最好只是拋出一個錯誤?如果是這樣,它應該總是只是一個內部服務器錯誤嗎?
我只是在尋找有關最佳實踐的建議,我意識到這里沒有一個正確的答案。
uj5u.com熱心網友回復:
我認為您可以記錄時間、url、狀態碼、回應內容和其他資訊可以幫助您。我的專案中的一個例子
private static async Task<T> HandleHttpResponse<T>(HttpResponseMessage response)
{
if (response.IsSuccessStatusCode)
{
var result = await response.Content.ReadAsStringAsync();
return JsonHelper.ToObject<T>(HandleHttpResult(result));
}
else
{
var result = await response.Content.ReadAsStringAsync();
LogHelper.WriteLog($"請求{response.RequestMessage.RequestUri}錯誤,錯誤描述:{response.StatusCode},錯誤碼:{response.StatusCode.ToInt32()},錯誤內容:{result}", $"{nameof(RemoteServerHelper)}_{nameof(HandleHttpResponse)}", true);
}
return default;
}
uj5u.com熱心網友回復:
好吧,有幾種方法可以回傳請求。
例子:
- System.Net.HttpStatusCode.Ok()(回傳狀態 200)
- System.Net.HttpStatusCode.BadRequest()(回傳狀態 400)
這是微軟檔案:
https://docs.microsoft.com/en-us/dotnet/api/system.net.httpwebresponse.statuscode?view=net-6.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/414096.html
標籤:
