我按照spring的官方链接使用jpa构建了一个rest服务器。这与浏览器oder chrome postman扩展名配合良好。
https://spring.io/guides/gs/accessing-data-rest/
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
并且想要使用Angular显示和处理数据。这是基于有角度的官方英雄榜样。
但是我无法处理来自Spring JPA rest服务器的响应。 因为格式是HAL-超文本应用程序语言。 看起来像:
{
"_embedded" : {
"persons" : [ {
"firstName" : "name1",
"lastName" : "name2",
"_links" : {
"self" : {
"href" : "http://localhost:8080/persons/1"
},
"person" : {
"href" : "http://localhost:8080/persons/1"
}
}
},
.......
人员数组中没有ID。
如何使用angular处理这种格式? 我应该自己写JavaScript代码吗? 如果是这样,如何从有角httpclient的结果中获取原始JSON数据?
我尝试编写spring控制器以返回Angular的常规JSON,并且可以正常工作。 但是以这种方式,我失去了Spring JPA信息库的好处,例如PagingAndSortingRepository,CrudRepository和JpaRepository。
我要保留纯弹性和角度特征,只是更改角度服务以获取数据。
答案 0 :(得分:0)
定义包装类:
export class PersonsWrapper{
_embedded: { person: Person[]};
}
然后将其用于调用Spring REST服务器:
httpClient.get<PersonsWrapper>(url).pipe(
map(w => w._embedded.persons)
).subscribe(persons => ...);
答案 1 :(得分:0)
我想我可能不清楚地谈论这个问题。所以我再次研究了这个问题。 原始的spring jpa rest示例给出的结果如下
在获取和设置Person类的ID之后,并添加接口RepositoryRestConfigurer的实现
//@Configuration
public class ExposeAllRepositoryRestConfiguration implements RepositoryRestConfigurer {
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
// TODO Auto-generated method stub
// RepositoryRestConfigurer.super.configureRepositoryRestConfiguration(config);
config.exposeIdsFor(Person.class);
}
}
(有些方法可以添加所有模型类)
我明白了
使用您的方法可以获取正确的数据