[英]Laravel RESTful best practices
我正在使用资源控制器构建一个使用Laravel 4.2的RESTful应用程序,如下所述: https ://scotch.io/tutorials/simple-laravel-crud-with-resource-controllers
该应用程序是一个在线发布平台。 该应用程序的一部分允许客户上传图像并裁剪图像以用于不同的出版物。 每个图像都可以标记为标题,艺术家,描述。
通常,RESTful GET索引请求URL看起来像这样。 HTTP GET:example.com/image/
将使用这样的URL检索每个图像。 HTTP GET:example.com/image/{id}
使用HTTP DELETE删除图像编号3到这样的URL。 HTTP DELETE:example.com/image/3
然而,我的RESTful困境的出现是因为每个图像必须以预定义的裁剪尺寸存储。 因此,图像资源将共享标题,艺术家和描述,并且将具有必须以四种不同尺寸检索的表示:原始,1024x768,640x480,320x240
预期的需求是每年约80,000张图像,产生320,000个单独的图像文件(原始+每个3个作物)。
这是我在寻找“最佳实践”建议的地方......
我的图像模型应该是什么样的,允许客户端寻址一个端点,以便轻松检索每个裁剪的图像?
什么是处理标题,艺术家和描述的共同性质的好方法?
如果我想在原始版本和1024x768中检索图像#3,URL会是什么样子:原始:example.com/image / ??? 1024x768:example.com/image / ???
如果我想删除Image#3的所有裁剪版本,URL会是什么样子:HTTP DELETE:example.com/image / ???
感谢您分享的任何想法!
我不知道Laravel如何使用Restful API,但一般来说,Restful API中的URL规则有点不同。
我发现这篇文章非常有用。
我认为缩略图是Image
资源的子资源; 也许是Thumbnail
资源? 因此,您可以使用以下URL结构:
Laravel可以实现嵌套资源控制器: http ://laravel.com/docs/4.2/controllers#restful-resource-controllers(搜索“处理嵌套资源控制器”标题)。
这样,您可以通过向父Image
资源发出请求来操纵单个缩略图资源,还可以处理图像(以及任何缩略图) - 只需在Image
模型上设置一个侦听器,以便在删除Image
资源时首先删除子Thumbnail
资源。 像这样的东西:
Image::deleting(function($image)
{
Thumbnail::where('image_id', '=', $image->id)->delete();
});
大小的图像文件是原始图像资源的从属资源。 所以大小信息应该在id之后: http : //example.com/image/3/1024x768 (或者因为你的分辨率是静态的,你可以像http://example.com/image/3/large那样做一些事情)
如果要删除原始大小和所有大小,请删除http://example.com/image/3
如果要删除单个大小,请删除http://example.com/image/3/1024x768
如果您想上传新的图片大小,可以执行POST http://example.com/image/3 (使用代码检查图片大小)
我不知道什么是“最好”的做法。
从我的观点来看,遵循OASIS开放数据协议(OData)4.0版是一种好习惯
有关更多信息,请参见http://www.odata.org/getting-started/basic-tutorial
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.