Я использую 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» или заменить его чем-то вроде «content»?
Я пытался добавить это свойство в моем application.yml:
spring: hateoas: use-hal-as-default-json-media-type: false
Iтакже пытался без "-":
useHalAsDefaultJsonMediaType: false
Не повезло.Я также попытался добавить следующие значения заголовка в запрос, но он не работает должным образом:
«Accept: application / hal + json» дает такой же ответ или «Accept: application / x-spring-data-verbose»+ json "дает мне 406 неприемлемо.
Вот мой ресурс:
@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));
}
}
Действительно не знаю, что делать в данный момент.Заранее спасибо.