如何建模分层的资源?例如,假设一个人具有“留言板”并且“消息”是资源。假设“消息”可以有回复,以便形成讨论线程。如何模拟线程的概念?
“消息”是否包含它的孩子? “线程”是它自己的资源吗?最后,在这个实例中,哪种REST URI可以使用?
答案 0 :(得分:1)
如果您认为对邮件的所有回复都是邮件,我会为每个邮件提供一个ID并使用这些URI:
#message {id} (only the message, no replies)
/messages/{id}
#replies to the {id} message (a list of the id's of the replies)
/messages/{id}/replies
要创建新消息,请向uri发帖子
/messages
要创建对邮件{id}的回复,请发帖
/messages/{id}/replies
更新
我将在此修改我以前的答案。希望这次能以正确的宁静风格。
你有一个入口点uri,我们称之为{messages}。
获取{讯息} - >所有消息的uris列表,{message1},{message2}等
获取{message1} - >使用message1文档进行响应,例如在xml中它可以是:
<message responses="{link to message1 responses}">
<date>...</date>
<body>...</body>
</message>
{link to message1 answers}是客户端必须遵循的链接,以获取响应的uris列表。
如果某条消息是对另一条消息的回复,则会在其内容中包含该消息,例如
<message responses="{link to message1 responses}" inResponseTo="{uri}" >
<date>...</date>
<body>...</body>
</message>
现在添加新消息,只需将其发布到原始的{messages} uri。如果该消息是对其他消息的响应,则仅将其包含在其内容中(请注意,这是对您发布对特殊uri的回复的初始答案的有效更改。)
要修改某些消息,请执行PUT到其uri。
所有的uris coudl都遵循答案第一部分的内容,但这不是必要的。
答案 1 :(得分:1)
到目前为止,每个响应都没有RESTful。 REST不需要是分层的。只需要一个像/ threads /这样的入口点,它给出了每个线程资源的完整URI,每个线程资源都会响应每个消息本身的URI,或者顶层消息加上其回复的URI,依此类推。生成这些URI的方式并不重要,只要它们可以通过入口点的超文本发现。