【问题标题】:My client queries my server. If the response is negative (e.g. error) how should I communicate it?我的客户查询我的服务器。如果响应是否定的(例如错误),我应该如何沟通?
【发布时间】:2011-04-14 07:27:55
【问题描述】:

我应该依赖 http 状态码吗?还是我应该使用某种特殊的回应? 我的服务器正在运行 PHP 并生成简单的 JSON 响应。

【问题讨论】:

    标签: php json http http-status-codes


    【解决方案1】:

    我个人认为你应该两者都做!返回适当的 4xx/5xx 状态代码以显示出现问题并将消息包含到您的 JSON 响应中。

    例如对于成功的请求:

    {
      "success": "true"
    }
    

    对于失败(例如 405 Method not allowed):

    {
      "success": "false",
      "message": "Requested data not available"
    }
    

    【讨论】:

    • 谢谢,但我还有一个问题。我不太了解HTTP。服务器如何决定是显示默认的 404 页面还是显示我的错误消息?
    • 在 404 的情况下,服务器不会执行您的脚本(除非您进行了某种重写),因此将显示默认的 404 错误页面。否则服务器应该使用你的脚本返回的代码+正文。
    • 您必须使用 php 标头函数来决定 HTTP 代码,例如
    • sì quello l'ho fatto ma dopo la pagina mi appare normalmente,almeno da browser.
    【解决方案2】:

    如果您可以使用具有两个属性的实体作为:Status & Message,这可能会更好。

    您从上述实体继承查询结果实体。

    如果操作成功则设置Status to True else 设置Status to False 并设置适当的error message into the Message property of above entity。

    请记住,最好不要将确切的数据库错误放入客户端显示中。这可能会增加黑客攻击的机会,相反,您可以在服务器上记录确切的消息,以便相关人员在出现问题时检查消息。

    所以,if Status=True 那么只有客户端可以进一步处理消息(例如访问属性或显示它们等),else if Status=False,然后是在数据访问逻辑处设置的错误文本,进入Message 属性会显示出来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-02
      • 1970-01-01
      • 1970-01-01
      • 2017-09-07
      • 1970-01-01
      • 2013-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多