我在这里寻找一些指导。
情境:
我有一个Post模型,它与Comment模型有多态关系。每当我想为给定的帖子创建新评论时,我都有以下端点:
$router->post('/posts/{post}/comments', 'PostsCommentsController@store');
到目前为止一切顺利。现在我想添加一个Attachment模型,它也是一个多态关系,因为我可能需要在注释之外添加附件(例如:消息等)。
我的第一个想法是做一些事情:
$router->post('/posts/{post}/comments/attachments', 'PostsCommentsAttachmentsController@store');
因此,评论将属于帖子,并且会有附件。
这对我来说感觉有点“脏”(特别是控制器名称)以及需要3个嵌套资源(也许我只是想太多了)。
希望我能够清楚地解释我的问题:)
以前有人遇到过这样的事吗?你们是怎么解决的?
其他方法?我认为完全错了吗?
愿意接受意见和建议:D
谢谢大家。
答案 0 :(得分:1)
对于每个Single Responsibility
或Controllers
,我更喜欢route
。所以很清楚他们实际做了什么和处理。让我举个例子:
- Post
/posts -> list all post
/posts/{id} -> get specific post
/posts/{id}/comments -> get comments of the post
- Comment
/comments/{id} -> get specific comment
/comments/{id}/attacments -> get attacments of a comment
- Attachment
/attachment/{id} -> get specific attachment
对于Controller
名称,请保持简单。只需使用PostController
,CommentController
和AttachmentController
即可。我觉得这很清楚。
答案 1 :(得分:0)
经过更多的研究,我实际上意识到我想做的事情基本上是带元数据的文件上传。
遇到了这篇优秀的帖子:HTTP/REST API File Uploads解释了它
PS:感谢Dharma的帮助和时间。