如何在没有关系 ID 的情况下将关系序列化为 JSON-API?
How to serialize relationships into JSON-API without relationship id's?
我正在连接的 API 没有使用 JSON-API 作为其响应格式,因此我必须为我的 [=27= 序列化响应] 应用程序。
我遇到的问题是 API 我的回复是这样的:
{
@type: "application/x.app-name.nurse-collection+json",
@type.item: "application/x.app-name.nurse+json",
@type.collection: "application/x.app-name.nurse-collection+json",
@href: "http://192.168.33.10:3000/api/nurses{?includePatients}",
@item: "http://192.168.33.10:3000/api/nurses/{id}",
items: [
{
@type: "application/x.app-name.nurse+json",
@type.item: "application/x.app-name.nurse+json",
@type.collection: "application/x.app-name.nurse-collection+json",
@href: "http://192.168.33.10:3000/api/nurses/1{?includePatients}",
id: 1,
Nurse: "Maria Holmes",
NurseTelephoneNo: "123 4567",
NurseMobileNo: "0123345566",
Email: "someone@example.com",
Patients: {
@type: "application/x.app-name.patient-collection+json",
@href: "http://192.168.33.10:3000/api/nurses/1/patients{?name,gender,includeNurse,includeEvents,includeReferrals,includeReviews,includePanels,includeRetrospectives,includePhbs,includeDisputeStage2s,includeDisputeResolutionPanels,includeEthnicity,includeFirstLanguage,includeMaritalStatus,includeReligion,includeSecurityLevel,includeSexualOrientation,includeWhichReview}",
@rel: "http://192.168.33.10:3000/api/nurses/1/patients{?name,gender,includeNurse,includeEvents,includeReferrals,includeReviews,includePanels,includeRetrospectives,includePhbs,includeDisputeStage2s,includeDisputeResolutionPanels,includeEthnicity,includeFirstLanguage,includeMaritalStatus,includeReligion,includeSecurityLevel,includeSexualOrientation,includeWhichReview}"
}
},
{
@type: "application/x.app-name.nurse+json",
@type.item: "application/x.app-name.nurse+json",
@type.collection: "application/x.app-name.nurse-collection+json",
@href: "http://192.168.33.10:3000/api/nurses/2{?includePatients}",
id: 2,
Nurse: "Julie Smart",
NurseTelephoneNo: "543 1234",
NurseMobileNo: null,
Email: "someone@example.com",
Patients: {
@type: "application/x.app-name.patient-collection+json",
@href: "http://192.168.33.10:3000/api/nurses/2/patients{?name,gender,includeNurse,includeEvents,includeReferrals,includeReviews,includePanels,includeRetrospectives,includePhbs,includeDisputeStage2s,includeDisputeResolutionPanels,includeEthnicity,includeFirstLanguage,includeMaritalStatus,includeReligion,includeSecurityLevel,includeSexualOrientation,includeWhichReview}",
@rel: "http://192.168.33.10:3000/api/nurses/2/patients{?name,gender,includeNurse,includeEvents,includeReferrals,includeReviews,includePanels,includeRetrospectives,includePhbs,includeDisputeStage2s,includeDisputeResolutionPanels,includeEthnicity,includeFirstLanguage,includeMaritalStatus,includeReligion,includeSecurityLevel,includeSexualOrientation,includeWhichReview}"
}
},
...
]
}
所以在这个例子中,patients
可能是一个集合,但在我到达那个端点之前我没有 hasMany 关系的 ID。
我想知道是否有一种方法可以以符合 JSON-API 的方式对其进行序列化,但一旦我的应用决定转到 patients
端点。
我会编写一个适合此响应类型的自定义序列化程序,而不是将其转换为 JSON-API 规范。
这里好像没有关于患者记录的任何信息(即 id 列表),所以在这里忽略它,除非您想为 hasMany
设置 link
属性.
异步加载关系数据可以很好地处理 ember-data。当您获得 patient
记录数组并将它们添加到商店时,只要加载的记录每个都有 nurse_id
.
,它们就可以与 nurse.get('patients')
一起使用
我正在连接的 API 没有使用 JSON-API 作为其响应格式,因此我必须为我的 [=27= 序列化响应] 应用程序。
我遇到的问题是 API 我的回复是这样的:
{
@type: "application/x.app-name.nurse-collection+json",
@type.item: "application/x.app-name.nurse+json",
@type.collection: "application/x.app-name.nurse-collection+json",
@href: "http://192.168.33.10:3000/api/nurses{?includePatients}",
@item: "http://192.168.33.10:3000/api/nurses/{id}",
items: [
{
@type: "application/x.app-name.nurse+json",
@type.item: "application/x.app-name.nurse+json",
@type.collection: "application/x.app-name.nurse-collection+json",
@href: "http://192.168.33.10:3000/api/nurses/1{?includePatients}",
id: 1,
Nurse: "Maria Holmes",
NurseTelephoneNo: "123 4567",
NurseMobileNo: "0123345566",
Email: "someone@example.com",
Patients: {
@type: "application/x.app-name.patient-collection+json",
@href: "http://192.168.33.10:3000/api/nurses/1/patients{?name,gender,includeNurse,includeEvents,includeReferrals,includeReviews,includePanels,includeRetrospectives,includePhbs,includeDisputeStage2s,includeDisputeResolutionPanels,includeEthnicity,includeFirstLanguage,includeMaritalStatus,includeReligion,includeSecurityLevel,includeSexualOrientation,includeWhichReview}",
@rel: "http://192.168.33.10:3000/api/nurses/1/patients{?name,gender,includeNurse,includeEvents,includeReferrals,includeReviews,includePanels,includeRetrospectives,includePhbs,includeDisputeStage2s,includeDisputeResolutionPanels,includeEthnicity,includeFirstLanguage,includeMaritalStatus,includeReligion,includeSecurityLevel,includeSexualOrientation,includeWhichReview}"
}
},
{
@type: "application/x.app-name.nurse+json",
@type.item: "application/x.app-name.nurse+json",
@type.collection: "application/x.app-name.nurse-collection+json",
@href: "http://192.168.33.10:3000/api/nurses/2{?includePatients}",
id: 2,
Nurse: "Julie Smart",
NurseTelephoneNo: "543 1234",
NurseMobileNo: null,
Email: "someone@example.com",
Patients: {
@type: "application/x.app-name.patient-collection+json",
@href: "http://192.168.33.10:3000/api/nurses/2/patients{?name,gender,includeNurse,includeEvents,includeReferrals,includeReviews,includePanels,includeRetrospectives,includePhbs,includeDisputeStage2s,includeDisputeResolutionPanels,includeEthnicity,includeFirstLanguage,includeMaritalStatus,includeReligion,includeSecurityLevel,includeSexualOrientation,includeWhichReview}",
@rel: "http://192.168.33.10:3000/api/nurses/2/patients{?name,gender,includeNurse,includeEvents,includeReferrals,includeReviews,includePanels,includeRetrospectives,includePhbs,includeDisputeStage2s,includeDisputeResolutionPanels,includeEthnicity,includeFirstLanguage,includeMaritalStatus,includeReligion,includeSecurityLevel,includeSexualOrientation,includeWhichReview}"
}
},
...
]
}
所以在这个例子中,patients
可能是一个集合,但在我到达那个端点之前我没有 hasMany 关系的 ID。
我想知道是否有一种方法可以以符合 JSON-API 的方式对其进行序列化,但一旦我的应用决定转到 patients
端点。
我会编写一个适合此响应类型的自定义序列化程序,而不是将其转换为 JSON-API 规范。
这里好像没有关于患者记录的任何信息(即 id 列表),所以在这里忽略它,除非您想为 hasMany
设置 link
属性.
异步加载关系数据可以很好地处理 ember-data。当您获得 patient
记录数组并将它们添加到商店时,只要加载的记录每个都有 nurse_id
.
nurse.get('patients')
一起使用