Employee
有很多PartyInvites
而Party
有很多PartyInvites
。我想要一个控制器方法来接受派对邀请。如果控制器PartyInvites
有这个(更新)方法将Employee
分配给Party
,哪个控制器负责返回聚会对象?
也许我误解了JSON REST API,但如果您正在使用特定资源(在本例中为PartyInvite),那么我们是否可以返回客户端不期望的内容(Party)。也许我正在过度思考这一切。但是,当PartyInvite被接受时,应该使用重定向来将PartyInvite
控制器重定向到Party
控制器吗?
答案 0 :(得分:1)
我不建议您在RESTful API中创建重定向,因为它不再是传统的REST API。
客户端应始终使用正确的状态代码获取所请求的资源。
然而,即使在API中也可以重定向客户端。您只需在响应标头中提供3xx Status Code和Location
即可。然后客户端必须创建一个新的API请求。
我只看到两个问题:
如果资源是在RESTful API中创建的,通常会返回201
状态。但由于客户端被重定向,因此无法使用此状态。 (这些信息当然也可以在回复的正文中)。
每个客户都必须能够处理重定向。如果此API是公开的,您应明确在您的文档中说明API会重定向到其他位置。
更好的解决方案是将Party
嵌入PartyInvite
:
示例:强>
{
"id": 12425124,
"invitee_count": 15,
"party": {
"id": 1252,
"location": "Wallstreet 10",
"and_so_on": "..."
}
}
这是返回RESTful
资源的nested
方式。
但当然您也可以使用3xx HTTP Status Codes
将客户端重定向到其他资源,但请确保客户端了解响应。
答案 1 :(得分:0)
是。 Party Invite更新可以重定向到特定Party的节目控制器并返回与Invite匹配的Party。当然,您可以使用PartyInvite本身执行此操作,使用API的客户端可以相应地进行调整。但是,这会破坏API的RESTful性