在REST API的GET请求中指定参数

5

我希望能够在一个请求中指定产品图片的尺寸,以下是我关于此的不同想法:

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将与此示例匹配,并且我可以在一个请求中传递所有必需的参数。

所以我的问题是这样做是否是一个好的实践,也许对于不熟悉API的人来说,这个URL可能会引起混淆。

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

所以我在这里向比我更有经验的人提问,我的目标是创建一份API文档,可以清晰地理解而不需要阅读大量的API文件,并且我的API应该遵循所有最佳实践。

这就是为什么我在这里询问这个问题,希望有人能够帮助我。

2个回答

3
我会这样做:
mysuperstore.com/api/categories/40/products/53/?image[width]=100&image[height]=100

谢谢,我会听从您的建议。 - user4655244

0

我认为这与SLIM框架无关,更多是一个设计实现问题。您可以随时查看指南以获取API设计最佳实践。

对于您关于图像的问题,您可以遵循苹果或谷歌的指南,它们使用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上使用。根据您需要处理的调用数量,但实时生成新图像可能会非常耗费资源。至少您应该存储/缓存已经生成的图像。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接