簡體   English   中英

Laravel RESTful最佳實踐

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM