2015-11-04 111 views
0

我有一个用户身份验证API,它返回包含一些数据的对象,包括状态码,例如。 200.即使证书不正确,我也会发送200状态消息,但响应对象的状态字段的状态为401,并且消息“Incorrect Credentials”。因此,我的问题是,哪种响应是正确的?即使证书不正确,我发送200状态消息,然后在响应对象内,我必须再次检查凭据是否正确或第二,如果凭据不正确,我发送状态401与响应对象?用户身份验证响应

+1

请参阅http://stackoverflow.com/questions/1618733/signalling-authentication-failure-in-a-restful-api – Lovababu

+0

上面的链接中没有用于身份验证的API,但是我有和我不确定哪个是正确的发送回复的方式。 –

+0

所以我的问题是,哪个回应是正确的?这不是你的问题。 – Lovababu

回答

0

我认为最好将它返回到HTTP标头中。通过这种方式,客户可以更轻松地知道错误发生了。最后它更直接。

0

最好的方法是有条件地返回标题中的http状态和代码。通过这种方式,用户可以使用本地方法对响应做出反应。如果服务中出现意外错误,并且无法形成漂亮的响应对象,则用户仍可以处理它,因为响应将具有适当的HTTP状态代码。如果用户总是期望你的API返回一个对象,那么他/她在这种情况下会遇到麻烦。当然,你可以告诉他们考虑到这一点,但是用户将不得不实施额外的逻辑来处理两种响应。

但是:

你可以做一些像我一样:让用户选择!

我在URL中放置一个变量,告诉服务是否返回带有正确代码的http响应。 的URL看起来是这样的:

/some_path/{real_http_code}/some_path_or_data 

{real_http_code}是真/假-text。如果这是真的,我们的服务知道用适当的HTTP状态码返回响应。如果为false,服务将始终返回200 OK -response,并且如果出现问题,用户必须检查响应。 因此,URL可能看起来像这样:

/some_path/true/some_path_or_data 

跌宕起伏:

+为用户提供自由选择

- 附加逻辑必须落实到服务