首页 > 解决方案 > 如何使用 WebClient 访问 REST 子资源并在 Rest Client 中使用它们

问题描述

我正在学习如何使用休息端点。我在访问子资源并在我自己的休息响应中使用它们时遇到问题。

例子。我收到了来自第 3 方休息服务的回复:

{“名称”:“卢克天行者”,“身高”:“172”,“质量”:“77”,“头发颜色”:“金发”,“皮肤颜色”:“公平”,“眼睛颜色”:“蓝色”, “birth_year”:“19BBY”、“性别”:“男性”、“电影”:[“https://swapi.dev/api/films/2/”、“https://swapi.dev/api/films /6/", ]........

我的客户端应用程序应该提供:

{“名称”:“卢克天行者”,“身高”:“172”,“质量”:“77”,“头发颜色”:“金发”,“皮肤颜色”:“公平”,“眼睛颜色”:“蓝色”, "birth_year": "19BBY", "gender": "male", "films": [ {""title": "The Empire Strikes Back", "episode_id": 5,"}, {""title": "绝地归来", "episode_id": 6, "}, ],

所以我的回复应该包含来自原始回复中链接的数据。怎么做 ?如何使用 WebClient 访问此子资源并通过将链接转换为来自该链接的数据来在我的响应中使用它们?或者也许我应该在模型类中使用某种 json 注释?到目前为止,我的 springboot 应用程序复制了带有链接的原始 json。感谢帮助。

@GetMapping("/people/{id}") public Person getPost(@PathVariable("id") Integer id) {

    return webClientBuilder.build()
            .get()
            .uri(ALL_PEOPLE_URL + id)
            .retrieve()
            .bodyToMono(Person.class)
            .block();
}

@JsonIgnoreProperties(ignoreUnknown = true)
@NoArgsConstructor
@ToString
@Getter
@Setter

public class Person {

    private String name;
    private String birth_year;
    private String eye_color;
    private String gender;
    private String hair_color;
    private String height;
    private String mass;
    private String skin_color;
    private String homeworld;
    private String[] films;
    private String[] species;
    private String[] starships;
    private String[] vehicles;
    private String url;
    private String created;
    private String edited;
}

标签: javajsonspring-bootrestwebclient

解决方案


推荐阅读