예기치 않은 json 반환, "_links"로 철자가 지정된 "links"가 있으며 Spring hateoas에서 구조가 다릅니다.
저는 객체를 있습니다.Product
ResourceSupport
그러나 제가 받은 응답은 "links"가 아닌 "_links" 속성을 가지고 있으며 다른 구조를 가지고 있습니다.
{
"productId" : 1,
"name" : "2",
"_links" : {
"self" : {
"href" : "http://localhost:8080/products/1"
}
}
}
HATEOAS 참조를 기준으로 예상되는 것은 다음과 같습니다.
{
"productId" : 1,
"name" : "2",
"links" : [
{
"rel" : "self"
"href" : "http://localhost:8080/products/1"
}
]
}
이게 의도된 건가요?그것을 바꿀 방법이 있습니까, 아니면 구조가 아니라면 적어도 "링크"는 있습니까?
다음 스니펫을 통해 selfLink를 추가했습니다.
product.add(linkTo(ProductController.class).slash(product.getProductId()).withSelfRel());
다음 빌드 파일로 스프링 부트를 사용하고 있습니다.
dependencies {
compile ("org.springframework.boot:spring-boot-starter-data-rest") {
exclude module: "spring-boot-starter-tomcat"
}
compile "org.springframework.boot:spring-boot-starter-data-jpa"
compile "org.springframework.boot:spring-boot-starter-jetty"
compile "org.springframework.boot:spring-boot-starter-actuator"
runtime "org.hsqldb:hsqldb:2.3.2"
testCompile "junit:junit"
}
기능을 은 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "spring-boot
REST 예제(여기):
@EnableAutoConfiguration(exclude = HypermediaAutoConfiguration.class)
제가아한는,한는▁as,HypermediaAutoConfiguration
HAL을 구성하는 것 외에는 별로 할 일이 없으므로 사용하지 않도록 설정해도 무방합니다.
Spring Boot now(전버=1.3.3).RELEASE에는 RELEASE의 .PagedResources
.
을 다음구 만 하면 .application.yml
파일 이름:
spring.hateoas.use-hal-as-default-json-media-type: false
다음과 같은 출력이 필요한 경우(질문 기반):
{
"productId" : 1,
"name" : "2",
"links" : [
{
"rel" : "self"
"href" : "http://localhost:8080/products/1"
}
]
}
편집:
은 그건그고, 당은단지만 됩니다.@EnableSpringDataWebSupport
이런 식으로 주석을 달 수 있습니다.
HAL을 사용할 수 있는 경우 스프링 부트를 통해 선택됩니다("_links"는 HAL을 통해 얻을 수 있습니다).당신은 할 수 있어야 합니다.@EnableHypermediaSupport
수동으로 설정하여 기본값을 재정의합니다.
개체를 반환하려고 할 때 적어도 리소스 지원 확장 대 개체를 포함하는 개체가 리소스 지원 확장을 반환할 때 문제가 발생한다는 것을 알게 되었습니다.리소스 지원 확장 개체의 목록 또는 배열을 반환해도 동일한 효과를 얻을 수 있습니다.예를 참조하십시오.
@RequestMapping(method = GET, value = "/read")
public NfcCommand statusPayOrder() {
return generateNfcCommand();
}
응답 있음:
{
"field": "123",
"_links": {
"self": {
"href": "http://bla_bla_bla_url"
}
}
}
목록으로 줄바꿈을 시도할 때:
@RequestMapping(method = GET, value = "/read")
public List<NfcCommand> statusPayOrder() {
return Arrays.asList(generateNfcCommand());
}
가져오기:
[
{
"field": 123
"links": [
{
"rel": "self",
"href": "http://bla_bla_bla_url"
}
]
}
]
답의 구조를 바꾸는 것은 올바른 결정이 아니지만, 우리는 이런 식으로 더 깊이 생각하려고 노력할 수 있습니다.
문제를 , 즉, HAL 형식, HAL 형식을 예상했습니다._links
하지만 항상 받았습니다.links
사하는기용을 사용하지만.@EnableAutoConfiguration
.
제 문제에 대한 해결책이 여기에도 도움이 될 수 있습니다.및 의 "RestController에 두 가지 미디어 .@RequestMapping
@RequestMapping(path="/example", produces = {MediaType.APPLICATION_JSON_VALUE, "application/hal+json"})
와 함께@EnableAutoConfiguration
는 Spring HATOAS의 합니다.application/hal+json
오직 그리고 내 지원서에는 책임이 있는 다른 사람이 있었습니다.MediaType.APPLICATION_JSON_VALUE
선정에서 우승하고 표준 JSON을 렌더링했습니다.
그래서 나의 해결책은 오직 셋팅입니다.produces="application/hal+json"
Spring HATEOAS 객체 매퍼가 선택되도록 합니다.당신의 경우, 당신은 유지하도록 노력해야 합니다.MediaType.APPLICATION_JSON_VALUE
@RepositoryRestResource 주석과 함께 Spring 데이터를 사용하고 있을 것입니다.
@RepositoryRestResource
public interface XX extends CrudRepository<AA, String>
기본 HAL 동작을 제거하려면 다음 주석 매개 변수를 추가할 수 있습니다.
@RepositoryRestResource(exported = false)
public interface XX extends CrudRepository<AA, String>
위의 구성 Spring Data REST는 종속성 프로젝트의 모든 리포지토리에 명시적으로 주석을 달 필요 없이 상위 프로젝트의 리소스에 대한 rest endpoint만 표시합니다.
문서에 따라
특정 리포지토리, 쿼리 방법 또는 필드 숨기기 특정 리포지토리, 리포지토리의 쿼리 방법 또는 엔티티의 필드를 전혀 내보내지 않을 수 있습니다.예를 들어, 사용자 개체의 암호와 같은 필드 또는 유사한 중요 데이터를 숨깁니다.내보내기 도구에서 이러한 항목을 내보내지 않도록 하려면 @RestResource로 주석을 달고 내보낸 항목을 = false로 설정합니다.
예를 들어, 리포지토리 내보내기를 건너뛰려면 다음과 같이 하십시오.
@RepositoryRestResource(exported = false)
interface PersonRepository extends CrudRepository<Person, Long> {}
저도 '_links'라는 것을 받고 있었습니다.@RequestMapping에서 실수로 @RequestMapping("id")이 있어야 할 때 @RequestMapping("{id}")을 가져왔다는 것을 발견했습니다.
제가 그것을 고쳤을 때, '_links'라는 것이 사라졌습니다.
언급URL : https://stackoverflow.com/questions/25431087/returned-json-unexpected-has-links-spelled-as-links-and-structure-differen
'source' 카테고리의 다른 글
Angular 2의 링크에 접두사 "unsafe"를 추가하지 않으려면 어떻게 해야 합니까? (0) | 2023.07.26 |
---|---|
mysqdump 10.17은 데이터가 없는 덤프 파일을 생성하지만 10.16은 정상적으로 작동합니다. (0) | 2023.07.26 |
PHP에서 Oracle 데이터베이스를 연결하는 방법 (0) | 2023.07.26 |
제출 버튼("감사합니다" 페이지 없음)에서 아약스를 사용하여 Google Adwords "변환 픽셀"을 구현하는 방법 (0) | 2023.07.26 |
Java EE에서 CDI를 사용하는 이유 (0) | 2023.07.26 |