【发布时间】:2018-11-11 18:22:33
【问题描述】:
我正在使用 Spring Boot 2.0.2(带有 oAuth2 2.3.3)和 HATEOAS(我有一个依赖文件说我正在使用它,即使我的重点不是那个)来构建一个 RestAPI。我可以毫无问题地提出请求并获得回复。但是,当我请求集合/页面时,我会在“_embedded”对象中得到响应,如下所示:
{
"_embedded" : {
"users" : [ {
"firstName" : "Stuff",
"lastName" : "ToDo",
...
}, {
"firstName" : "Things1",
"lastName" : "Does",
...
} ],
"_links" : {
"self" : {
"href" : "http://localhost:8080/user{?page,size,sort}",
"templated" : true
},
"profile" : {
"href" : "http://localhost:8080/profile/user"
},
"search" : {
"href" : "http://localhost:8080/user/search"
}
},
"page" : {
"size" : 20,
"totalElements" : 2,
"totalPages" : 1,
"number" : 0
}
}
是否可以删除“_embedded”属性或将其替换为“内容”之类的东西?
我尝试在我的 application.yml 上添加此属性:
弹簧: 讨厌: 使用-hal-as-default-json-media-type: false
我也试过不带“-”:
useHalAsDefaultJsonMediaType: false
运气不好。我还尝试在请求中添加以下标头值,但它无法正常工作:
"Accept: application/hal+json" 给出相同的响应 要么 "Accept: application/x-spring-data-verbose+json" 给我一个 406 Not Acceptable。
这是我的资源:
@RepositoryRestResource(collectionResourceRel = "user", path = "user")
@PreAuthorize("hasRole('ROLE_ADMIN'")
public interface UserRepositoryAndResource extends PagingAndSortingRepository<User, Long> {
public User findByLogin(@Param("login") String login);
public Page<User> findByLoginContaining(@Param("login") String login, Pageable pageable);
}
我还有一个控制器,用于在无会话上下文中公开当前用户。我不想谈这个:
@Controller
public class UserForTokenController {
private UserRepositoryAndResource repo;
@Autowired
public UserForTokenController(
UserRepositoryAndResource repo) {
this.repo = repo;
}
@GetMapping("user/current")
public ResponseEntity<UserModel> getForToken(OAuth2Authentication auth) throws UserNotFoundException {
String authUser = (String) auth.getPrincipal();
String login = authUser;
User user = Optional.of(repo.findByLogin(login)).orElseThrow(() -> new UserNotFoundException());
return ResponseEntity.ok(UserModel.build(user));
}
}
目前真的不知道该做什么。 提前致谢。
【问题讨论】:
-
如果您不确定 yml 文件中的属性,请添加包含您的属性的
bootstrap.properties或application.properties(spring.hateoas.use-hal-as-default-json-media-type=false)
标签: java spring rest spring-boot spring-hateoas