我應該在標記無效的情況下返回上一個JSON API的API令牌驗證錯誤
// GET api/Job
public IEnumerable<Job_Hdr> GetJob_Hdr()
{
if (Validation.isValid(Request.Headers.GetValues("Token").Single()) == true)
throw new Exception("Invalid token");
...
}
我應該在標記無效的情況下返回上一個JSON API的API令牌驗證錯誤
// GET api/Job
public IEnumerable<Job_Hdr> GetJob_Hdr()
{
if (Validation.isValid(Request.Headers.GetValues("Token").Single()) == true)
throw new Exception("Invalid token");
...
}
https://stackoverflow.com/a/31206850/5750143
您應該從API的方法來扔HttpResponseException
,不HttpException
:
throw new HttpResponseException(HttpStatusCode.Unauthorized);
或者,如果你想提供一個自定義消息:
var msg = new HttpResponseMessage(HttpStatusCode.Unauthorized) { ReasonPhrase = "Oops!!!" };
throw new HttpResponseException(msg);
我@Evk同意在意見提出什麼樣的或錯誤,返回的錯誤應該是HTTP 401
Unauthorized
。
在的WebAPI,我建議讓你的函數的返回類型爲HttpResponseMessage
,你可以拋出錯誤,如:
return Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "String error Message");
所以最終的代碼可以是這樣的:
// GET api/Job
public HttpResponseMessage GetJob_Hdr()
{
if (Validation.isValid(Request.Headers.GetValues("Token").Single()) == true)
return Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "String Message");
...
IEnumerable<Job_Hdr> JobModelCollection=GetYourData();
return Request.CreateResponse(HttpStatusCode.OK, JobModelCollection);
}
如果你想更改API路由,您也可以通過修改具有屬性[Route("api/Job/GetJob_Hdr")]
的API方法來完成此操作。通過這個,您可以調用方法爲api/Job/GetJob_Hdr
&也可以在使用路由的相同API中定義多個get方法。
401未授權。順便說一下,在上面的代碼中,當token是_valid_時,會引發異常。 – Evk