在REST API GET请求中指定参数

时间:2015-04-24 09:59:18

标签: php android api http slim

我希望能够在一个请求中指定产品的图像大小,我对此有不同的想法,这里是:

mysuperstore.com/api/categories/40/products/53?width=100&height=100

我认为这是不好的做法,因为不清楚宽度和高度是什么意思,可能是产品的实际尺寸。

另一个变体是:

mysuperstore.com/api/categories/40/products/53/image?width=100&height=100

它看起来很不错,但在这种情况下我必须提出两个请求,它似乎是另一个资源ID(图像)。

第一个请求是产品

  mysuperstore.com/api/categories/40/products/53/

第二个是图像URL

mysuperstore.com/api/categories/40/products/53/image?width=100&height=100

是的,我不需要返回原始图像(数据),而只需返回URL 我正在使用Slim Framework在PHP服务器上创建API。我找到了带有可选参数的此类API请求的示例

$app->get('/archive(/:year(/:month(/:day)))', function ($year = 2010, $month = 12, $day = 05) use ($app) {
    echo sprintf('%s-%s-%s', $year, $month, $day);
    print_r($app->request()->get());
});

因此,之前的URL将与此示例匹配,我可以在一个请求中传递所有必需的参数。

所以我的问题是,如果这样做是一个好习惯,也许这个URL对于不熟悉API的人来说可能是混乱的。

  mysuperstore.com/api/categories/40/products/53/image?width=100&height=100

所以我要求的人比我更有经验,我的目标是创建可以清楚理解的API,而无需阅读大量的API文档。我的API应该遵循所有最佳实践。

这就是我提出这个问题的原因,我希望有人可以帮助我。

2 个答案:

答案 0 :(得分:2)

我会这样做:

mysuperstore.com/api/categories/40/products/53/?image[width]=100&image[height]=100

答案 1 :(得分:0)

我认为它与SLIM框架无关,而是更多的设计实现问题。您可以随时查看有关API设计最佳做法的guide

对于有关图片的问题,您可以关注apple或google指南,他们使用的是image_name [WIDTH] x [HEIGHT] .jpeg,例如:

  

http://a4.mzstatic.com/us/r30/Purple7/v4/c2/36/25/c2362536-f6fc-4ef6-2a03-9b899ca00af9/screen480x480.jpeg

图像已预先生成并可在CDN上使用。根据您必须处理多少次调用但动态生成新图像可能非常耗费大量工作量。至少你应该存储/缓存已生成的图像。