编辑14/08/14 13:29
我的下一个结论是,从我的@RepositoryRestResource CrudRepository生成的HAL+JSON格式是不正确的。
{
"_links" : {
"people" : {
"href" : "http://localhost:8080/people{?page,size,sort}"
}
}
}
{
"links" : [ {
"rel" : "customer",
"href" : "http://localhost:8080/customer"
}, {
"rel" : "profile",
"href" : "http://localhost:8080/profile"
}
}
编辑14/08/14:我的调试又进了一步。通过提供我自己的org.springframework.hateoas.ResourceSupport类的实现(它检查json中的“_links”而不是“links”),我就更进一步了。错误是:
“无法从START_OBJECT标记反序列化java.util.ArrayList实例。....通过引用链:com.ebs.solas.admin.test.SolicitorDto[\"_links\"]”
这是因为org.springframework.hateoas.ResourceSupport类似乎要求links属性是一个json数组。默认情况下,Spring Data为Rest实体生成的JSON+HAL输出不生成数组(没有方括号):
"_links" : {
"self" : {
"href" : "http://localhost:9090/solas-admin-data-api/solicitorFirms/Fxxx"
},
"solicitors" : {
"href" : "http://localhost:9090/solas-admin-data-api/solicitorFirms/Fxxx/solicitor
}
}
希望Spring论坛的人能在这里帮助我。
=================================================
请查看我的Spring数据存储库代码的概要:
@RepositoryRestResource
public interface SolicitorFirmRepository extends CrudRepository<SolicitorFirm, String> {
}
@Entity
@RestResource
@Table(name="XXXX", schema = "XXX")
public class SolicitorFirm implements Serializable {
}
{
"firmNumber" : "FXXXX",
"solicitorType" : "r",
"companyName" : "XXXX",
"address1" : "XXXX",
"address2" : "XXX",
"address3" : "XXX",
"address4" : null,
"phoneNumber" : "XXXXX",
"faxNumber" : "XXXXX",
"county" : "OY",
"_links" : {
"self" : {
"href" : "http://localhost:9090/solas-admin-data-api/solicitorFirms/XXXX"
},
"solicitors" : {
"href" : "http://localhost:9090/solas-admin-data-api/solicitorFirms/XXXX/solicitors"
}
}
import org.springframework.hateoas.ResourceSupport;
public class SolicitorFirmDTO extends ResourceSupport {
.....
}
RestTemplate rt = new RestTemplate();
String uri = new String("//xxxxx:9090/solas-admin-data-api/solicitors/Sxxxxx");
SolicitorFirmDTO u = rt.getForObject(uri, SolicitorFirmDTO.class, "SXXXX");
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:无法识别的字段“_links”(类com.ebs.solas.admin.test.SolicitorFirmdTo),未标记为可忽略(7个已知属性:xx])
出于某种原因,Spring Data Rest生成的json在_links
下添加实体链接,而HATEOAS资源超类则期望links
?
有人能帮忙吗?这是版本问题,还是需要一些额外的配置来将_links
映射到links
我尝试了MappingJackson2HttpMessageConverter
和各种媒体类型application/json+hal
,但没有成功。
对于Spring-boot 1.3.3,用于List的方法exchange()正在工作
public void test1() {
RestTemplate restTemplate = restTemplate();
ParameterizedTypeReference<PagedResources<User>> responseTypeRef = new ParameterizedTypeReference<PagedResources<User>>() {
};
String API_URL = "http://localhost:8080/api/v1/user"
ResponseEntity<PagedResources<User>> responseEntity = restTemplate.exchange(API_URL, HttpMethod.GET,
(HttpEntity<User>) null, responseTypeRef);
PagedResources<User> resources = responseEntity.getBody();
Collection<User> users = resources.getContent();
List<User> userList = new ArrayList<User>(users);
System.out.println(userList);
}
private RestTemplate restTemplate() {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.registerModule(new Jackson2HalModule());
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setSupportedMediaTypes(MediaType.parseMediaTypes("application/hal+json"));
converter.setObjectMapper(mapper);
List<HttpMessageConverter<?>> converterList = new ArrayList<HttpMessageConverter<?>>();
converterList.add(converter);
RestTemplate restTemplate = new RestTemplate(converterList);
return restTemplate;
}
我尝试使用MockMVC和TestRestTemboard。在这两种情况下,返回的响应都是404,但是APIendpoint在集成测试之外工作(当我自己运行Spring应用时)。 有没有人有一个可以工作的示例应用程序,它使用SpringDataREST对生成的控制器进行了工作集成测试? 我还可以编写针对自己控制器的常规集成测试(非SDR类型) 测试代码: 回购: 好的,我发现了问题,但我不知道答案
我不想公开我的模型类(jpa实体),而是用不同的数据传输对象(DTO)公开它们属性的不同子集。这个想法是不切实际的 例子: 实体: JpaRepository: DTO: D到积垢积存物: 实施: 一般: 在本例中,我想用Spring数据REST公开GroupDtoDao。 在其他bean中,我可以自动连接GroupDto和GroupDto,所以两者都由Spring的上下文管理。如果我不使用@Re
正如我们所知,在SpringDataRest中,存储库文件只被使用(而不是控制器),我们可以为它使用内置方法。 我不想添加自定义方法,并在那里添加我的请求处理逻辑。我想要一些配置或事件重写,在这里我可以处理HttpRequest处理程序,解析令牌并检查令牌中的一些数据,根据该令牌,我将决定要么处理该请求,要么放弃它,但出现一些错误。 谢了。
问题内容: 我正在尝试开发非常简单的json网络服务,以返回这种形式的数据: 如您所见,这非常简单。我的POJO扩展了ResourceSupport,因此解析链接没有问题。它们是这样的: UsersJson(根元素) 用户杰森 事实是,我期望jackson和spring足够聪明,可以解析_embedded属性并填充我的UsersJson.users属性,但事实并非如此。 我尝试了在互联网上发现的各
我对Spring数据Rest与Spring数据JPA一起使用有一个问题。我使用的是Spring boot 1.4.4。释放 我的rest spring数据存储库在这里: 这里没有显示我的setters和bregetter。 轮廓爪哇: 属性JAVA “上的帖子”http://localhost:8880/profiles“要创建实体: 这是我击球时的结果http://localhost:8880/
下面是我的spring-data-rest存储库: 下面是我的实体(为简洁起见,没有显示getter和setter)。 profile.java: 有关依赖关系版本的更多信息可以在这里找到。如果需要,我没有重写这些(http://docs.spring.io/spring-boot/docs/1.4.4.release/reference/html/appendience-dependency-v