Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel RESTful最佳实践_Php_Image_Rest_Symfony_Laravel 4 - Fatal编程技术网

Php Laravel RESTful最佳实践

Php Laravel RESTful最佳实践,php,image,rest,symfony,laravel-4,Php,Image,Rest,Symfony,Laravel 4,我正在使用Laravel 4.2构建一个RESTful应用程序,使用资源控制器,如下所述: 该应用程序是一个在线发布平台。 该应用程序的一部分允许客户端上传图像并裁剪不同出版物的图像。 每个图像都可以标记标题、艺术家、描述 通常,RESTful获取索引请求URL如下所示。 HTTP-GET:example.com/image/ 每个图像都将使用如下URL进行检索。 HTTP-GET:example.com/image/{id} 图像编号3将通过HTTP DELETE删除到如下URL。 HTTP

我正在使用Laravel 4.2构建一个RESTful应用程序,使用资源控制器,如下所述:

该应用程序是一个在线发布平台。 该应用程序的一部分允许客户端上传图像并裁剪不同出版物的图像。 每个图像都可以标记标题、艺术家、描述

通常,RESTful获取索引请求URL如下所示。 HTTP-GET:example.com/image/

每个图像都将使用如下URL进行检索。 HTTP-GET:example.com/image/{id}

图像编号3将通过HTTP DELETE删除到如下URL。 HTTP删除:example.com/image/3

然而,我的RESTful困境出现了,因为每个图像必须存储在预定义的裁剪大小中。 因此,图像资源将共享标题、艺术家和描述,并具有必须以四种不同大小检索的表示: 起初的 1024x768, 640x480, 320x240

预计每年的需求量约为80000张图像,产生320000张单独的图像文件(每个原始图像+3张)

这里是我寻找“最佳实践”建议的地方

我的图像模型应该是什么样子的,以允许客户端处理一个端点,以便轻松检索每个裁剪的图像

处理标题、艺术家和描述的共同性质的好方法是什么

如果我想检索原始和1024x768中的图像#3,URL会是什么样子: 原件:example.com/image/??? 1024x768:example.com/image/

如果我想删除图像#3的所有裁剪版本,URL会是什么样子: HTTP删除:example.com/image/


谢谢你的分享

大小的图像文件是原始图像资源的从属资源。所以尺寸信息应该在id之后:(或者因为你的分辨率是静态的,你可以这样做)

如果要删除原始尺寸和所有尺寸,请删除

如果要删除单个尺寸,请删除


如果你想上传一个新的图像大小,你可以这样做,POST(使用代码检查图像大小)

我认为缩略图是
图像
资源的子资源;也许是
缩略图
资源?因此,您可以有如下URL结构:

  • {id}
  • {id}/thumbnail/{small | medium | large}
嵌套资源控制器可以在Laravel中实现:(搜索标题“处理嵌套资源控制器”)

这样,您可以通过发出请求来操作单个缩略图资源,也可以操作图像(和任何缩略图)。父
图像
资源只需在
图像
模型上设置一个侦听器,以便在删除
图像
资源时首先删除子
缩略图
资源。大概是这样的:

Image::deleting(function($image)
{
    Thumbnail::where('image_id', '=', $image->id)->delete();
});

我不知道Laravel如何使用Restful API,但通常Restful API中URL的规则有点不同

  • 使用get方法获取单个对象{id}
  • 获取列表--使用get方法
  • 插入/创建新对象--使用方法POST
  • DELETE-{id}-使用DELETE方法
  • PUT-{id}-与方法PUT
  • 使用get方法获取具有某些参数的单个对象-{id}?type=small

我还发现这篇文章非常有用。

我不知道什么是“最佳”实践

在我看来,遵循OASIS开放数据协议(OData)4.0版是一个很好的实践


更多信息请参见

谢谢,Laravel的“嵌套”控制器路由正是我所需要的@RayPaseur很高兴我能帮上忙:)同意:Vinay Sahni的文章在一个地方整合了很多好的信息。谢谢