我有一个RESTful API的自定义实现,用于返回json数据的PHP应用程序,为了传达操作的状态,即请求中是否有失败,我正在设置一个自定义HTTP头一个(非常小的)json对象作为字符串。这很有效,因为我可以发送响应并轻松检索客户端,而不会弄乱发送的实际数据。
问题是,使用这种方法可能没有任何弊端吗?应用程序设置自定义http标头似乎并不常见,所以我想知道这是一种不好的做法还是不好的“味道”。
答案 0 :(得分:14)
这是一个有趣的问题。它应该没有任何理由成为问题,但你应该考虑一些事项:
X-MyApplication-Foo: Bar
。不这样做可能会在将来引起冲突。是否有理由不能使用标准HTTP错误代码?我知道您可能想要提供堆栈跟踪或其他有用的调试信息,但是如果出现错误,您是否只返回包含错误信息的JSON blob,而不是正常的“结果”JSON数据?您可以根据HTTP错误代码轻松检测差异,并以不同方式处理这两种情况。
我担心你建议的方法的原因是标题用于改变或导致浏览器行为 - 它们不是一个数据存储机制。
伪代码示例:
switch(httpResponseCode)
{
case 200:
parseResult(json);
break;
case 403:
parseForbidden(json);
break;
case 500:
parseServerError(json);
break;
default:
// bad response code, handle appropriately
}