如果JSON API上的令牌无效,我应该返回什么类型或错误
// GET api/Job
public IEnumerable<Job_Hdr> GetJob_Hdr()
{
if (Validation.isValid(Request.Headers.GetValues("Token").Single()) == true)
throw new Exception("Invalid token");
...
}
答案 0 :(得分:0)
我同意评论中建议的@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
&amp;也可以使用Routes在同一个API中定义多个get方法。
答案 1 :(得分:0)
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);