API上传包含元数据

时间:2017-10-06 08:23:07

标签: laravel database-design architecture polymorphism nested-resources

我在这里寻找一些指导。

情境:

我有一个Post模型,它与Comment模型有多态关系。每当我想为给定的帖子创建新评论时,我都有以下端点:

$router->post('/posts/{post}/comments', 'PostsCommentsController@store');

到目前为止一切顺利。现在我想添加一个Attachment模型,它也是一个多态关系,因为我可能需要在注释之外添加附件(例如:消息等)。

我的第一个想法是做一些事情:

$router->post('/posts/{post}/comments/attachments', 'PostsCommentsAttachmentsController@store');

因此,评论将属于帖子,并且会有附件。

这对我来说感觉有点“脏”(特别是控制器名称)以及需要3个嵌套资源(也许我只是想太多了)。

希望我能够清楚地解释我的问题:)

以前有人遇到过这样的事吗?你们是怎么解决的?

其他方法?我认为完全错了吗?

愿意接受意见和建议:D

谢谢大家。

2 个答案:

答案 0 :(得分:1)

对于每个Single ResponsibilityControllers,我更喜欢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名称,请保持简单。只需使用PostControllerCommentControllerAttachmentController即可。我觉得这很清楚。

答案 1 :(得分:0)

经过更多的研究,我实际上意识到我想做的事情基本上是带元数据的文件上传。

遇到了这篇优秀的帖子:HTTP/REST API File Uploads解释了它

PS:感谢Dharma的帮助和时间。