繁体   English   中英

Spring HATEOAS,将链接对象嵌入WS响应中

[英]Spring HATEOAS, embed linked object in WS response

我正在使用Spring Boot和Spring HATEOAS构建REST API。

我有2个简单的对象。 比方说:

// Model
@Entity
public class Person {
    private String  name;
    private Address address;
    // ... usual methods omitted for brievity
}

@Entity
public class Address {
    private String street;
    private String city;
    // ...
}

// Repository. It exposes directly a REST service
public interface PersonRepository extends PagingAndSortingRepository<Person, Long> {}

// Application entry point
@ComponentScan
@EnableAutoConfiguration
@EnableJpaRepositories
@Import(RepositoryRestMvcConfiguration.class)
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

这个简单的项目创建如下输出:

{
    "_links": {
        "self": {
            "href": "http://localhost:8080/persons{?page,size,sort}",
            "templated": true
        }
    },
    "_embedded": {
        "persons": [
            {
                "name": "Some name",
                "_links": {
                    "self": {
                        "href": "http://localhost:8080/persons/1"
                    },
                    "address": {
                        "href": "http://localhost:8080/persons/1/address"
                    }
                }
            }
        ]
    }
}

很好,但是我希望应用程序直接在响应中发送Address对象。 为了不必查询地址的URL。

就像是:

...
        "persons": [
            {
                "name": "Some name",
                "address": {
                    "street": "Some street name"
                    "city": "Some city name"
                }
                "_links": {
                    "self": {
                        "href": "http://localhost:8080/persons/1"
                    },
                    "address": {
                        "href": "http://localhost:8080/persons/1/address"
                    }
                }
            }
        ]
...

是否有任何配置可以做到这一点? 我在Spring HATEOAS docs中找不到关于它的任何配置。 这是仅使用常规Spring控制器时的默认行为。

Spring Data REST文档的最新版本说明了摘录 这提供了数据集合的替代默认视图。

您的用例就是它最初设计的确切角度。

删除AddressRepository接口,对象地址将嵌入在Person类的json中。 但是将无法通过ID获取地址

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM