【问题标题】:Why is ResponseEntity body returning null?为什么 ResponseEntity 正文返回 null?
【发布时间】:2019-12-21 16:07:11
【问题描述】:

我是 Java 和创建 API 的新手。我试图简单地发出一个 POST 请求并返回一个特定的值。这是我的代码:

@Service
@AllArgsConstructor
public class WebService {

    private RestTemplate restTemplate;
    private static final String PROJECT_URL = "http://localhost:8080/project";

    public ResponseEntity<ProjectResponse> createProject(Project project) {
        ResponseEntity<ProjectResponse> completeProject = restTemplate.postForEntity(PROJECT_URL, project, ProjectResponse.class);
        System.out.println("Response body " + completeProject.getBody());
        return completeProject;
    }

}

ProjectResponse 类简单地具有:

@Data
@NoArgsConstructor
public class ProjectResponse {
    private String id;
}

问题是 id aøwaus 被返回为 (id=null)。即使当我使用“String”而不是 ProjectResponse 时一切正常,我看到创建了 id。因此,由于某种原因,将响应映射到 ProjectResponse 类存在问题。

有谁知道可能出了什么问题?

【问题讨论】:

  • @billalGHILAS 它已经有 Data 执行相同的注释
  • 您返回的响应对象是否包含id 元素?
  • 是的,我看到将所有内容都转换为字符串时设置了 id-element
  • @Nora 你试过覆盖toString()吗?
  • 我认为你应该使用 postforobject。似乎 postforentity 返回字符串,但 postforobject 返回一个对象。

标签: java spring-boot


【解决方案1】:

试试这个,让你的 projectPesponse 类与项目相同。

@Service
@AllArgsConstructor
public class WebService {

    private RestTemplate restTemplate;
    private static final String PROJECT_URL = "http://localhost:8080/project";

    public ResponseEntity<Project> createProject(Project newProject) {
        Project completeProject = restTemplate.postForObject(PROJECT_URL, newProject, Project.class);
        log("Response body " + completeProject.getBody());//Log this instead
         return ResponseEntity.ok(completeProject);
    }

}

【讨论】:

    【解决方案2】:

    试试这个并在此处处理异常以生成类 ResponseErrorHandler 并实现 ResponseErrorHandler(i)

    @Component
    public class WebService {
    
    private RestTemplate restTemplate;
    private static final String PROJECT_URL = "http://localhost:8080/project";
    
    public ProjectResponse createProject(Project project) {
    
    ProjectResponseErrorHandler errorHandler = new ProjectResponseErrorHandler(
    project.getId());
        restTemplate.setErrorHandler(errorHandler);
        ResponseEntity<ProjectResponse> completeProject = restTemplate.postForEntity(PROJECT_URL, project, ProjectResponse.class);
      log("Response body " + completeProject.getBody());
        return completeProject.getBody();
    }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-03-14
      • 1970-01-01
      • 2022-12-26
      • 1970-01-01
      • 2016-12-28
      • 2020-01-27
      • 2015-11-25
      • 2015-07-04
      • 2019-09-29
      相关资源
      最近更新 更多