将标头数据存储在url中

时间:2019-07-12 15:20:18

标签: javascript node.js api header

我们正在建立一个购物网站,需要显示数百种产品及其图像。我们没有产品图片,但是有单独的公司服务。

我已获得访问此API服务的权限。 GET在端点https://imageservice.com/api/v3/images/{product_UPC}处设置产品图片需要标头Ocp-Apim-Subscription-Key

这将返回一个响应,其中包含一系列适用的产品图片变体。响应数组中的每个图像都位于类似https://imageservice.com/api/v3/asset/[hash]的URL处。这些散列的图像URL是一次性的,必须再次与Ocp-Apim-Subscription-Key一起请求才能实际显示图像。

这使对我们自己的产品API的请求过程变得困难,因为我们无法使用产品及其各自的图像URL作为数据库的种子。取而代之的是,每次购物站点从我们自己的数据库中请求商品时,我们都必须按商品ID分别请求图片,循环浏览商品并将图片与每个商品匹配。

此外,他们的服务每10秒被限制到大约20个请求,并且我们在每个分页呼叫中加载30-40个产品。如果我们最初不将URL加载到数据库中,则会减慢产品的显示速度。

问题:我们已经具有使用此单独的图像API服务的付费许可证和API密钥,并且我已经在数据库中存储了每种产品及其正确的图像URL。问题在于我们需要将 header Ocp-Apim-Subscription-Key连同URL一起传递,而无需形成一个全新的AJAX请求。该怎么办?

1 个答案:

答案 0 :(得分:1)

  

问题是我们需要将标头Ocp-Apim-Subscription-Key与URL一起传递,而无需形成全新的AJAX请求。该怎么办?

如果您的问题是如何在不提出请求的情况下查询图像,那么简短的回答是否,您不能。标头是出于安全原因而制作的。如果目标服务不仅要求标头,而且不仅要求URL参数,那么每次要检索图像时,都必须按照其要求的每个步骤发送新请求。

我只看到2个解决方案

进一步了解您的API

您为其检索图像的公司使用的API可能有一些更深层次的选择,以使您可以对其进行更多控制。例如,一个功能可在一个请求中一次检索许多图像。

仔细研究一下,这可能是您最好的解决方案

不使用请求

如果以上建议都不符合您的意愿,那么您只能选择自己存储图片。您需要处理似乎是私有的外部API。因此,您会受到合作伙伴公司工作的限制,这是完全正常的并且是预期的。他们可能有充分的理由提出了这些限制,而超过限制可能导致不安全的行为。

如果要最大程度地控制,则需要自己处理大部分控制。如果您与合作伙伴公司的工作紧密联系在一起,那么您必须与他们一起看看他们可以给予您什么许可以及如何从他们的工作中获得最大的利润。

编辑

您还可以使用AJAx或其他替代格式(例如Axios)来格式化请求。多看一看。至少,这将避免您在每次调用时都设置所有请求参数。