我有一个用于返回 json 数据的 PHP 应用程序的 RESTful API 的自定义实现,并且为了传达操作的状态,即请求中是否有失败,我正在设置一个自定义 HTTP 标头(非常tiny) json 对象作为字符串。这很好用,因为我可以发送响应并轻松地在客户端检索它们,而不会弄乱发送的实际数据。
问题是,使用这种方法有没有我可能没有意识到的缺点?应用程序设置自定义 http 标头似乎并不常见,所以我想知道这是一种不好的做法还是某种不好的“品味”。
我有一个用于返回 json 数据的 PHP 应用程序的 RESTful API 的自定义实现,并且为了传达操作的状态,即请求中是否有失败,我正在设置一个自定义 HTTP 标头(非常tiny) json 对象作为字符串。这很好用,因为我可以发送响应并轻松地在客户端检索它们,而不会弄乱发送的实际数据。
问题是,使用这种方法有没有我可能没有意识到的缺点?应用程序设置自定义 http 标头似乎并不常见,所以我想知道这是一种不好的做法还是某种不好的“品味”。
这是个有趣的问题。应该没有任何理由让它成为问题,但您应该考虑以下几点:
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
}