代码之家  ›  专栏  ›  技术社区  ›  koral

RESTful API设计-响应HTTP代码

  •  0
  • koral  · 技术社区  · 6 年前

    我需要两个行动电话使用邮政。

    VerifyCerts 不需要参数。在后端,它验证2个文件(之前上载)是否正确。如果出错,我应该返回什么?我是说,它应该是HTTP状态代码4xx还是200,以及内容错误信息?

    ApllyCerts 也不需要参数。它尝试应用已上载的证书文件。当出现错误(文件不正确)时,我应该返回什么4xx代码?反应体应该是什么?

    2 回复  |  直到 6 年前
        1
  •  1
  •   VoiceOfUnreason    6 年前

    VerifyCerts 不需要参数。在后端,它验证2个文件(之前上载)是否正确。如果出错,我应该返回什么?我是说,它应该是HTTP状态代码4xx还是200,以及内容错误信息?

    记住,HTTP对“动作调用”一无所知。它知道资源和资源的表示。但是实现细节是故意隐藏的。

    这里,听起来您有一个资源,该资源的表示是根据存储在服务器上的数据计算出来的。因此,我希望在回应的同时 2xx 代码,即使这两个文件当前是“无效”的。

    (请求没有问题,服务器也没有问题,您只是在记录当前世界的状态与快乐之路不一致)。

    阿普林茨也不需要参数。它尝试应用已上载的证书文件。当出现错误(文件不正确)时,我应该返回什么4xx代码?反应体应该是什么?

    响应体是容易的部分-

    除了在响应头请求时,服务器应该发送一个包含错误情况解释的表示,以及它是临时的还是永久的。

    响应代码更难。我认为你可以为 403 Forbidden 409 Conflict ;实际上,客户机的请求是试图将资源从状态A转换为状态B,但事实上,资源当前处于状态Z,没有转换到状态B。

    在实践中,我不认为这很重要——默认情况下,这些响应代码都是不可访问的,通用消费者没有任何特殊的理由以不同的方式处理这些代码,等等。语义上的区别没有任何实际的效果,我可以看到。

    所以,如果以后有人说服你改变你使用的客户机,我认为通用客户机的行为不会有任何不同。

        2
  •  0
  •   user1428716    6 年前

    因为这些不需要任何参数意味着验证和应用程序不需要输入,所以错误应该是500。

    HTTP状态500 响应正文(JSON或文本) { 错误代码:“filenotfound”…等 }