当前位置: 首页 > 知识库问答 >
问题:

在Spring引导中创建响应实体类对象的方法

闻人浩波
2023-03-14

我是Spring引导的新手,我正在尝试创建处理程序方法来在Spring引导中创建REST API。为了处理请求localhost:8080/stack我创建了下面的处理程序方法,其中我使用响应实体的构造函数来创建它的对象,并在返回语句中传递它。

 @GetMapping("/stack")
    public ResponseEntity<String> stack(){
        System.out.println("I am stack method");
        return new ResponseEntity<>("Body",HttpStatus.OK);
    }
}

但我也可以用下面的方法

 @GetMapping("/stack")
    public ResponseEntity<String> stack(){
        System.out.println("I am stack method");
        return ResponseEntity.status(HttpStatus.OK).body("Body");
    }

我不知道在使用构造函数的处理程序方法中创建和返回响应实体对象的最佳方法是什么,为什么?谁来帮帮忙。在生产中,哪种方式是最可取的?

共有3个答案

平光明
2023-03-14

在这种情况下,最好的方法是从restcontroller方法返回字符串(“Body”),它将自动包装在responseentity中,响应状态为200OK

商运锋
2023-03-14

ResponseEntity表示整个HTTP响应。您可以控制其中的任何内容:状态代码、标题和正文。

@响应体是HTTP响应体的标记,@响应状态声明HTTP响应的状态代码。

@ResponseStatus不是很灵活,ResponseEntity让你做得更多。

叶谦
2023-03-14

这与第二种方法返回ResponseEntity类的新对象相同。如果您检查body方法的实现,如下所示:-

@Override
    public <T> ResponseEntity<T> body(@Nullable T body) {
        return new ResponseEntity<>(body, this.headers, this.statusCode);
    }
 类似资料:
  • 我希望有人能为我在Spring Boot项目中对JPA实体的困惑提供一些帮助。我听说在Spring项目中不应该调用< code>new。我知道这是为了让Spring管理所有的bean,可以通过注入或通过应用程序上下文显式地获得bean。 但是,我不清楚如何获得新的 JPA 实体。如果我有一个用 注释的类和一个处理数据访问的存储库类,如何在服务层中获取新的实体对象? 我已经在应用程序的主类中包含,所

  • 我使用的是Spring版本4(Spring data),我想将Object作为JSON返回,我想知道以下代码即使不使用xmlRootElement注释用户类也能工作: 任何机构都可以解释吗?当我需要注释要返回为JSON的对象类时,响应体/响应实体是否自己完成工作?

  • 这可能是一个奇怪的问题,尽管我想知道为什么以前没有人提出过这个问题。。。因此,如果有任何无知,请纠正我。 首先,我将Jackson与Spring和@ResponseBody注释结合使用。目前,对于每个请求处理程序,我都返回一个“Response”包装器对象,这是客户机所期望的。这个包装非常简单: 问题是,我不喜欢显式地包装所有请求处理程序的每个返回值。我也不喜欢在单元测试中打开这些响应包装。 相反

  • 我使用Spring的return ResponseEntity来返回HTTP响应。 当在实体中传递POJO或MAP时,它将其转换为JSON对象。喜欢 结果可能是 POJO 类(获取器和二次生成器) 我正在用 现在我想要的是,我将在请求中获得响应字段列表。我只想仅使用这些字段响应请求。 对于Ex,如果我收到的响应字段为name, id。那么对象必须只包含这两个。 我不能使用@jsonignore或@

  • 我正在尝试学习在Quarkus框架上使用ReactiveMongoClient。 我以大学的身份发送回复部分成功 但是,当我尝试获取其他类的对象(StaffResponse)以包含用于分页的链接对象时,我没有得到任何Staff记录。(目前,我有用于分页的硬编码链接) 响应中的“staff”为空。 MongoClient正在返回人员列表ok,看起来响应对象没有获取该列表。试图阅读SmallRye的叛

  • @覆盖 公共列表getOrder(String orderNo){ StoredProcedureQuery=EntityManager.createstoredProcedureQuery(“xx.xxx.get_order_details”);query.RegisterStoredProcedureParameter(1,String.class,parametermode.in);quer