如果我在资源/人员上执行以下http调用我的api并返回
{
"_embedded": {
"people": [
{
"id": 1,
"firstName": "John",
"lastName": "Doe",
"_links": {
"self": {
"href": "http://localhost:8080/person/1"
},
"person": {
"href": "http://localhost:8080/person/1"
}
}
}
]
},
"_links": {
"self": {
"href": "http://localhost:8080/person"
}
}
}
数据正在屏幕上呈现在表格中,目前我从后端公开了我的ID,并使用以下链接为我的react-router
处理
<Link to={`person/${this.props.person.id}`}>Detail</Link>
在这里,我无法在渲染链接中传递链接,并且必须传递id才能在我的后端执行详细调用。但是,我没有手动构建href
,而是想在我的下一个组件中使用_links.self.href
处的网址。
如果不在我的React应用程序中暴露id,我怎样才能实现这一目标?
答案 0 :(得分:0)
发现了一个问题here。
在链接使用中:
<Link to={{pathname: "/person", state: { person: person }}} />
在引用的组件中:
this.props.location.state.person
答案 1 :(得分:0)
您的问题几乎与我在回答此问题时给出的示例相同:https://stackoverflow.com/a/18083285/760706
我将对您提供的内容提出的主要问题是,您在_embedded
部分(/person/1
)中包含的资源未包含在集合资源的链接中,即{ {1}}部分。相反,您已在人员自己的链接中将其列在_links
旁边。
我看到的第二个问题是您使用的链接关系,&#34;人员&#34; (实际上链接到个人),不是URI,也不是IANA注册的链接关系列表。这是链接关系中仅有的两种合法类型。在这种情况下,您的集合应使用已注册的关系self
指向其成员。对于自定义关系,您的URI应该是您控制的域下的HTTP URL,指向文档,以便用户可以通过转到URL来查找该链接关系的文档。