Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest 对于已经执行或不需要的操作,API响应应该是什么_Rest_Api_Json Api_Http Response Codes_Jsonapi Resources - Fatal编程技术网

Rest 对于已经执行或不需要的操作,API响应应该是什么

Rest 对于已经执行或不需要的操作,API响应应该是什么,rest,api,json-api,http-response-codes,jsonapi-resources,Rest,Api,Json Api,Http Response Codes,Jsonapi Resources,当我的JsonAPI被请求执行一些已经完成或没有意义的操作时,我应该返回什么样的响应(代码+内容) 示例:假设我想请求发布一篇文章。文章草稿是通过一个特定的端点(此处不相关)更新的,还有一个特定的端点需要发布(我们对其响应感兴趣) 4种不同的场景I,我需要确定每次发送的响应类型: 发布从来没有被请求过,并且该文章包含所有发布强制信息,请求发布是有意义的,因此我将返回一个202接受的响应,其中包含包含“publicationrequested at”属性的文章资源 已发送/确认成功的发布请求,其间

当我的JsonAPI被请求执行一些已经完成或没有意义的操作时,我应该返回什么样的响应(代码+内容)

示例:假设我想请求发布一篇文章。文章草稿是通过一个特定的端点(此处不相关)更新的,还有一个特定的端点需要发布(我们对其响应感兴趣)

4种不同的场景I,我需要确定每次发送的响应类型:

  • 发布从来没有被请求过,并且该文章包含所有发布强制信息,请求发布是有意义的,因此我将返回一个202接受的响应,其中包含包含“publicationrequested at”属性的文章资源

  • 已发送/确认成功的发布请求,其间没有人有时间查看该请求。我应该返回什么

  • 先前的发布请求已被某人审阅并接受(文章现已发布)。API再次收到一个已经发布的文章的发布请求,这没有意义,我应该返回什么

  • 文章没有填写所有强制性信息,有些人提出了发布请求。我必须通知用户,由于错误,他的请求未被批准。我想这一次我可以返回验证错误列表。听起来公平吗


  • 你的头两颗子弹

    • 发布从来没有被请求过,并且该文章包含所有发布强制信息,请求发布是有意义的,因此我将返回一个202接受的响应,其中包含包含“publicationrequested at”属性的文章资源
    • 已发送/确认成功的发布请求,其间没有人有时间查看该请求。我应该返回什么
    …符合以下条件:

    202已接受:请求已接受处理,但处理尚未完成。请求可能最终会被执行,也可能不会被执行,并且在处理过程中可能会被拒绝

    你的第三颗子弹:

    • 先前的发布请求已被某人审阅并接受(文章现已发布)。API再次收到一个已经发布的文章的发布请求,这没有意义,我应该返回什么
    我可能会在这里使用303重定向:

    303请参见其他:可以使用GET方法在另一个URI下找到对请求的响应。当收到对POST(或PUT/DELETE)的响应时,客户端应假定服务器已收到数据,并应发出带有单独GET消息的重定向

    <>但是你也可以考虑308个永久重定向:

    308永久重定向(RFC 7538):应该使用另一个URI重复请求和所有未来的请求。307和308并行于302和301的行为,但不允许更改HTTP方法。因此,例如,向永久重定向的资源提交表单可能会继续顺利进行

    但我倾向于303

    最后一颗子弹:

    • 文章没有填写所有强制性信息,有些人提出了发布请求。我必须通知用户,由于错误,他的请求未被批准。我想这一次我可以返回验证错误列表。听起来公平吗
    这是一个标准的“坏客户端请求”(4xx),有错误:

    400错误请求:由于明显的客户端错误(例如,错误的请求语法、过大的大小、无效的请求消息帧或欺骗性的请求路由),服务器无法或将不会处理该请求

    只需确保在枚举响应中的错误时不会公开服务的实现细节

    记住:

    • 2xx响应表明成功
    • 3xx响应表示重定向
    • 4xx响应表明客户端出现故障
    • 5xx响应表示为请求提供服务的应用程序部分出现故障
    资料来源: