- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我们目前正在我们最新的项目中实现一个 API 库。我们正在尝试使用带有 HAL 的 Spring HATEOAS 作为适当的库来生成 json hal 响应。
使用 Spring boot 1.2.5.RELEASE + 提供的 Spring HATEOAS 版本。目前我们正在映射要作为资源返回的实际 JPA 实体。
即我们的实体看起来像这样:
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Entity
@Table(name = "users")
public class User {
@Id
private UUID id;
@Column(nullable = false, length = 70)
private String firstName;
@Column(nullable = false, length = 70)
private String lastName;
}
我们的存储库:
public interface UserRepository extends PagingAndSortingRepository<User, UUID>, JpaSpecificationExecutor<User> {
User findByUsername(String username);
}
我们的服务:
@Service
@Transactional
public class UserService implements UserDetailsService {
private UserRepository userRepository;
@Autowired
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
@Transactional
public Page<User> findAll(Pageable pageable) {
return this.userRepository.findAll(pageable);
}
}
RestController:
@RestController
@RequestMapping(value = "/users", produces =MediaType.APPLICATION_JSON_VALUE) // this is done otherwise objectmapper returns xml for some reason
public UserRestController {
public UserService userService;
public EntityLinks entityLinks;
@Autowired
public UserRestController(UserService userService, EntityLinks entityLinks) {
this.userService = userService;
this.entityLinks = entityLinks;
}
@RequestMapping(method = RequestMethod.GET)
public PagedResource<Resource<User>> getUsers(Pageable pageable, PagedResourcesAssembler<User> pagedResourcesAssembler) {
Page<User> userPage = this.userService.findAll(pageable);
PagedResources<Resource<User>> userPagedResources =
pagedResourcesAssembler.toResource(
usersPage,
linkTo(methodOn(UserRestController.class).showUsers(pageable, pagedResourcesAssembler)).withSelfRel());
return userPagedResources;
}
}
假设我将默认页面大小设置为 1,页面将被适本地生成。设置指向上一页/下一页的链接。正在生成“可嵌入”属性,但随后我们在第一页上得到“userList”:[{user}],在第二页上得到“user$$_jvst163_9List”:[{user}]。
有没有办法实际命名页面列表属性(我一直试图在网上找到一些东西但无济于事)。
例如:
{
"_links": {
"self": {
"href": "http://localhost:8080/users{?page,size,sort}",
"templated": true
},
"next": {
"href": "http://localhost:8080/users?page=1&size=1&sort=firstname,lastname,asc"
}
},
"_embedded": {
"userList": [{
"id": "2027bea9-cfdc-4724-b29c-39b3f64cbfd5",
"firstname": "admin",
"lastname": "asdf",
}]
},
"page": {
"size": 1,
"totalElements": 2,
"totalPages": 2,
"number": 0
}
}
{
"_links": {
"self": {
"href": "http://localhost:8080/users{?page,size,sort}",
"templated": true
},
"prev": {
"href": "http://localhost:8080/users?page=0&size=1&sort=firstname,lastname,asc"
}
},
"_embedded": {
"user_$$_jvst163_9List": [{
"id": "52c0c09e-c386-4aec-9723-f8beaf99adc5",
"username": "admin",,
"firstname": "firstname",
"lastname": "lastname"
}]
},
"page": {
"size": 1,
"totalElements": 2,
"totalPages": 2,
"number": 1
}
}
最佳答案
据我了解作者自己对该问题的评论,找到的解决方案是将 @Relation(collectionRelation = "users") 添加到 User 类。
...
@Table(name = "users")
@Relation(collectionRelation = "users")
public class User {
...
关于java - 在 HATEOAS _embedded PagedResource 中命名 Spring 页面键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32400801/
我正在使用支持 HATEOAS 的 Spring Data REST。我是这个范式的新手。 在来 self 的 RESTful Web 服务的 GET 响应中,我经常在名为 _embedded 的节点
我正在使用 Spring Boot 2.0.2(带有 oAuth2 2.3.3)和 HATEOAS(我有一个依赖文件,表明我正在使用它,即使我的重点不是)来构建 RestAPI。我可以毫无问题地提出请
我们正在尝试解析以下 JSON 以获取人员列表。 JSON 响应: { "_embedded": { "people": [ { "id": 35356,
我正在为购物 list 开发 Spring Boot 应用程序。为此,我使用 Spring Data Rest 通过 REST API 导出我的实体。 我的架构是这样的 我有一个ShoppingIte
我正在使用 Spring Boot 和 HATEOAS 构建一个 REST API,当我的 API 返回一个集合时,它被包装在一个“_embedded”属性中,如下所示: { "_links":
我正在尝试使用以下 REST HAL 响应中的实体列表: { "_embedded" : { "posts" : [ { "branch" : 1, "ar
我运行基于 Spring Boot Gradle Plugin 的 SDR 应用程序.我最近从 2.1.9.RELEASE 升级了至 2.2.0.RELEASE .虽然不能 100% 确定这就是原因,
我们目前正在我们最新的项目中实现一个 API 库。我们正在尝试使用带有 HAL 的 Spring HATEOAS 作为适当的库来生成 json hal 响应。 使用 Spring boot 1.2.5
我有一个简单的用例,我想使用一个用 json+hal 表示的资源集合。 我使用 spring RestTemplate 并将其配置为使用 Jackson2HalModule。 当我调试我的代码时,我发
我使用 CrudRepository 与 Restful 服务创建了一个基本的 Spring Boot 应用程序来与数据库交互。 JSON 响应包含我不想要的 "_embedded": { ... }
我很欣赏有几个库可以使用 HAL 格式的 HATEOAS linkrels,但我很想了解更多有关以最基本的方式访问 _embedded 资源及其 _links 的信息 - 或者我想我应该说天真 - 方
我正在尝试使用 Spring HATEOAS 构建符合 HAL 的 REST API。 经过一些摆弄后,我设法大部分按预期开始工作。(示例)输出现在看起来像这样: { "_links": {
我们正在尝试使用 spring-cloud @FeignClient 从另一个微服务调用微服务的 HAL-JSON REST API。该服务使用 Spring Data Rest、Spring Boo
我正在尝试调用返回这种形式的数据的非常简单的 json 网络服务: { "_embedded": { "users": [{ "identifier":
我正在使用 spring-boot-2.2.1 和 spring-HATEOAS。超媒体链接工作正常,但是我在返回链接时看到 _embedded 属性,请在 github here 中查找以下代码以供
我是一名优秀的程序员,十分优秀!