Java json api中的一个对象可以有两个ID吗
我使用的是一个RESTfulWebService,它以JSONAPI格式给出响应。存在一个具有id和类型参数的关系属性。基于id引用,它显示包含属性中的值。id是在作为最终输出处理的两个请求之后创建的。在此之前,我将数据作为一个对象保存在数据库中。现在,当我使用RESTWebService从数据库中获取数据时,输出显示除包含的属性之外的所有属性。我认为这是因为它无法找到参考,所以无法显示。但是在数据库中,所有的值都是完美的。我不确定json api是否支持关系属性的多个ID。 例子: 请求机构:Java json api中的一个对象可以有两个ID吗,java,rest,web-services,json-api,Java,Rest,Web Services,Json Api,我使用的是一个RESTfulWebService,它以JSONAPI格式给出响应。存在一个具有id和类型参数的关系属性。基于id引用,它显示包含属性中的值。id是在作为最终输出处理的两个请求之后创建的。在此之前,我将数据作为一个对象保存在数据库中。现在,当我使用RESTWebService从数据库中获取数据时,输出显示除包含的属性之外的所有属性。我认为这是因为它无法找到参考,所以无法显示。但是在数据库中,所有的值都是完美的。我不确定json api是否支持关系属性的多个ID。 例子: 请求机构:
{
"data": {
"type": "orders",
"attributes": {
"name": "new order",
"updateDate": "",
"register":"yes",
"items":[
{
"description": "newly added item",
"type": "new item",
"amount": [
{
"deliveryfee": "123",
"mrp": "456"
}
]
}
]
}
}
}
预期回应机构:
{
"data": {
"type": "orders",
"id": "1",
"attributes": {
"name": "new order",
"updateDate": "",
},
"relationships": {
"items": {
"data": [
{
"type": "items",
"id": null
}
]
}
}
},
"included": [
{
"type": "items",
"id": null,
"attributes": {
"type": "new item",
"description": "newly added item",
"amount": [
{
"deliveryfee": "123",
"mrp": "456"
}
]
}
}
]
}
{
"data": {
"type": "orders",
"id": "1",
"attributes": {
"name": "new order",
"updateDate": "",
},
"relationships": {
"items": {
"data": [
{
"type": "items",
"id": null
}
]
}
}
}
}
实际响应机构:
{
"data": {
"type": "orders",
"id": "1",
"attributes": {
"name": "new order",
"updateDate": "",
},
"relationships": {
"items": {
"data": [
{
"type": "items",
"id": null
}
]
}
}
},
"included": [
{
"type": "items",
"id": null,
"attributes": {
"type": "new item",
"description": "newly added item",
"amount": [
{
"deliveryfee": "123",
"mrp": "456"
}
]
}
}
]
}
{
"data": {
"type": "orders",
"id": "1",
"attributes": {
"name": "new order",
"updateDate": "",
},
"relationships": {
"items": {
"data": [
{
"type": "items",
"id": null
}
]
}
}
}
}
我不能完全肯定我是否正确理解了你的问题。但让我试着回答
类型
和id
的组合用于识别资源:
在给定的API中,每个资源对象的类型
和id
对必须标识一个唯一的资源
示例中使用的null
不是id
的有效值:
id
和type
成员的值必须是字符串
API可以组合其内部数据库中使用的多个标识符来构造JSON API文档中用于id
的值,只要该值对于给定类型是唯一的。从JSON API规范的角度来看,这将是一个有效的id
值,只要保证它是唯一的
{
“类型”:“职位”:
“id”:“post_id:5,locale:en”
}
API可以将ID反序列化为两个不同的标识符:ID为5
的post和ID为“en”
的local。这将是API的内部实现细节。消费者不应该在意某个含义是否在id
值中编码
您问题中给出的请求和响应机构不匹配。两者都包含一个字段项
。但是在请求主体中,items
字段是一个属性,而它在响应中是一个关系
似乎您正试图同时创建多个资源。JSON API规范v1不支持这一点。规范v1.1的第三个候选版本通过正式扩展支持它。正确,由于业务用例,这些项是一个单独的实体。我们必须以关系的形式将其合并为一个响应。我将在v1.1中尝试同样的方法。谢谢