使用带有spring boot的api

anhgbhbe  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(326)

**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

上个月关门了。
改进这个问题
我是spring的新手,我正在尝试使用一个api,该api是使用学生资源库中的注解@restrepositoryresources创建的,如下所示:

@RepositoryRestResource
public interface StudentRepository extends JpaRepository<Student, Long> {

}

所以,我想使用另一个项目的api,比如:

@RestController
public class StudentController {

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping
    public List<Student> getStudents(){
        ListStudent response=restTemplate.getForObject("http://localhost:8080/student-service/students", ListStudent.class);
        System.out.println(response);
        return response.getStudents();
    }
}

当然,这不起作用,因为响应的格式

{
     "_embedded": {
     "students": []
    },
    "_links": {
    "self": {
    "href": "http://localhost:8081/students"
    },
    "profile": {
    "href": "http://localhost:8081/profile/students"
    }
    },
       "page": {
        "size": 20,
        "totalElements": 0,
        "totalPages": 0,
        "number": 0
    }  
}
57hvy0tb

57hvy0tb1#

我不知道是什么 ListStudent 但是您的类需要匹配json响应,尽管它可以省略您不需要的任何内容。你需要一个 StudentResponse 类,其中包含 List<Student> .

4c8rllxm

4c8rllxm2#

您可以创建与响应匹配的pojo,但更简单的选择是更改 Content-Type . spring数据rest使用 application/hal+json 默认情况下;为请求添加标头 Content-Type: application/json ,并且响应结构应该更易于使用。
您也可以设置 spring.data.rest. default-media-type=application/jsonapplication.properties 设置默认内容类型。

相关问题