【问题标题】:POST Response Best Practice - Should I return an Entity or a Server Side Redirect?POST 响应最佳实践 - 我应该返回实体还是服务器端重定向?
【发布时间】:2018-03-23 17:58:28
【问题描述】:

基本上就是标题所说的。我有一个应用程序可以让用户更新数据库上的信息。在代码中,我设置了响应以在成功时返回消息:

public Response updatePerson(@PathParam("id") int id, @FormParam("name") String name) throws Exception {

   Profile profile = new Profile(id, name)
   manager.updateProfile(id, person);
   return Response.status(201).entity("Profile updated.").build();

不过,我也想做一个重定向,可以这样做:

public Response updatePerson(@PathParam("id") int id, @FormParam("name") String name) throws Exception {

   Person person = new Person(id, name)
   manager.updatePerson(id, person);
   return Response.seeOther(new URI("/home")).build()

我的问题有两个:

  1. 为 POST 方法返回响应时,最佳做法是什么?是否应该有响应正文确认 POST 成功,或者代码是否足够?

  2. 有没有什么方法可以将这两个操作结合起来,从而返回响应正文上的实体,同时执行重定向?

【问题讨论】:

    标签: java redirect post response httpresponse


    【解决方案1】:

    您可以在成功时简单地返回响应代码 200。您可以返回响应正文,但这取决于客户端在更新后的要求或期望。如果您想进行重定向,则可以将响应代码 301 与内容“位置:http://www.example.org/index.asp”一起使用。但是如果你返回 301 并不意味着请求是正确的。在重定向的 URL 中,您可以返回 201,然后表明它是正确的。

    欲了解更多信息,请参阅:https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

    注意:如果您想进行更新,通常使用PUT HTTP 请求。 POST 主要用于创建,GET 用于检索数据。

    【讨论】:

      猜你喜欢
      • 2011-05-26
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      • 1970-01-01
      • 2010-12-21
      • 2013-10-12
      • 2014-09-15
      • 2022-01-24
      相关资源
      最近更新 更多