当前位置: 首页 > 面试题库 >

REST可以在POST之后返回内容吗?

段干帅
2023-03-14
问题内容

我正在使用RESTlet,并且已经创建了资源。我通过覆盖acceptRepresentation方法处理POST 。

客户端应该向我发送一些数据,然后将其存储到DB,将响应设置为201(SUCCESS_CREATED),我需要向客户端返回一些数据,但是返回类型acceptRepresentationvoid

就我而言,我需要返回一些标识符,以便客户端可以访问该资源。

例如,如果我有一个带有URL的资源,/resource并且客户端发送了POST请求,则在DB中添加一个新行,其地址应为/resource/{id}。我需要发送{id}

难道我做错了什么?REST原则是否允许在POST之后返回某些内容?如果可以,我该怎么办?如果不能,该如何处理?


问题答案:

REST只是说您应该遵循统一接口。换句话说,它说您应该按照HTTP规范执行POST应该执行的操作。这是相关规范中的报价,

如果在源服务器上已经创建了资源,则响应应该为201(已创建),并包含一个描述请求状态并引用新资源的实体以及一个Location头(参见14.30节)。

从中可以看到,您可以在两个地方向客户端指示新创建的资源所在的位置。Location标头应具有指向新资源的URL,并且您还可以返回包含详细信息的实体。

我不确定覆盖acceptRepresentation()和覆盖post()之间有什么区别,但是此示例显示了如何从POST返回响应。



 类似资料:
  • 问题内容: 我想知道在不需要时跳过的方式是否不好。 例: 在这两种情况下,当condition为false时,函数将以返回。 问题答案: 就像您说的那样,几乎不需要。 但是,您应该考虑到使用 明确 的代码,代码的 意图 会更加清晰。切记:一段代码也需要人类可读,而明确表示通常会有所帮助。

  • null 换句话说:服务是否应该允许客户机读取(GET)一个资源表示,当在更新时发送(PUT)时,该表示本身将被标记为无效(关于数据验证)? 更新:注意:这不是关于媒体类型,而是实际的数据验证。

  • 给定url'https://api-xxxxxxxxxxxxxxx/xxxxx/' 和报头授权='Bearer'令牌 标题X-XSRF-header='xxxxxxxxx' 标题内容类型='应用程序/xxx。Pingixxxxx。checkUsernamePassword json' //在上面的一行中,“checkUsernamePassword”自动更改为(小写u) //即更改为“应用程序/x

  • 问题内容: 我正在尝试编写一个返回诺言的函数。但是有时候,所请求的信息会立即可用。我想将其包装在一个承诺中,这样消费者就不必做出决定了。 并像这样使用它: 问题在于,对于预解析的Promise不会执行回调。这是合法的事情吗?有没有更好的方法来处理这种情况? 问题答案: 简短的答案:是的,您可以 在返回AngularJS承诺之前将其解析,并且其行为将与您期望的一样。 来自JB Nizet的Plunk

  • 当我尝试向Activiti REST URL发送GET请求时,使用POSTMAN并配置授权参数(kermit:kermit),它就像一个符咒。 但是当我尝试做同样的事情时,只使用Angular$超文本传输协议服务,它返回以下错误: 无法加载XMLHttpRequesthttp://localhost:8080/activiti-rest/service/repository/deployments

  • 我正在使用blueprint开发一个camel restlet项目,以部署在Fuse上。它是一个非常简单的HTTP帖子,带有简单的文本正文。我将交换模式设置为。 另外,如果处理是一个长时间运行的进程,会发生什么?我希望在数据发布后立即终止,而不是等到上下文中完成处理。 我的蓝图是这样的: