我应该在标记无效的情况下返回上一个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