【问题标题】:"Missing Authentication Token" Error when calling DVLA MOT history API with Postman使用 Postman 调用 DVLA MOT 历史 API 时出现“缺少身份验证令牌”错误
【发布时间】:2020-03-02 08:36:23
【问题描述】:

注意 - 我对这一切都很陌生。如果有任何不清楚的地方,我们深表歉意。

我的首要目标是从 DVLA API 中提取大量车辆的 MOT 历史数据。我知道这可以使用我正在使用的 Postman 来完成(如果有的话,在 64 位 Windows 笔记本电脑上)。

DVLA 提供以下说明

================================================ =====

开始

所有 API 接口都实现为 RESTful API,并通过 https 访问。

要访问 API,您需要一个唯一标识请求来源的 API 密钥。如果 DVSA 批准您的申请,它将给您一个 API 密钥。

您应该确保 API 密钥的安全,因为 DVSA 在 API 密钥级别管理限制和配额。

每个请求的标头中必须包含以下必填字段:

接受:application/json+v6 x-api-key: content-type 字段确认响应类型为 JSON 格式,x-api-key 字段提供您的 API 密钥以识别请求的来源。

技术资源

通过https://beta.check-mot.service.gov.uk/访问API

当服务从测试版转为正式版时,此根 URL 将发生变化。

这 4 个端点相当于使用 API 的 4 种方法:

/trade/vehicles/mot-tests?registration={registration}

‘Registration’是车辆登记号。

================================================ ====

为了测试这是可能的,我在 Postman 的栏中输入以下单个请求,选择“POST”并点击“SEND”

https://beta.check-mot.service.gov.uk/trade/vehicles/mot-tests?Content-type=application/json&x-api-key=ABCDEFGH&registration=MYREG

n.b. ABCDEFH 或 MYREG 的实际值周围没有逗号或其他标点符号

预期结果:某种带有此车辆 MOT 历史记录的 JSON

实际结果:{"message": "Missing Authentication Token"}{"message": "Missing Authentication Token"}

我不清楚: - 我是否应该使用 POST

  • 申请后的+v6是什么(其他文档省略)

  • 为什么“Accept”和“Content-type”在文档中似乎可以互换使用

  • 参数的顺序是否重要

  • 是否可以通过简单地将 url 粘贴到浏览器中来进行同样的测试

感谢您的帮助

【问题讨论】:

  • 您需要将它们添加为标题,而不是像您在 URL 中所做的那样查询参数。注册可能是唯一的查询参数 - 没有看到 API 文档所以不确定

标签: rest api post postman


【解决方案1】:

阅读此处的文档:

https://dvsa.github.io/mot-history-api-documentation/

它提到这些字段应该添加为Headers

Each request must have the following mandatory fields in 
the header:

- Accept: application/json+v6
- x-api-key: <your api key>

网站上有示例cURL 请求可帮助您创建请求。

如果您在应用程序中使用 Postman 的 Import 功能(位于右上角),您可以在 Paste Raw Text 选项卡中添加此 cURL 请求。

curl -H "Accept: application/json+v6" -H "x-api-key: <your_api_key>" https://beta.check-mot.service.gov.uk/trade/vehicles/mot-tests\?registration=ZZ99ABC

这将为您提供一个示例请求,说明它应该是什么样子。从这里,您将能够添加自己的 API 令牌并发送请求。

【讨论】:

    【解决方案2】:

    如果您使用的是 Postman,您可以使用请求下方的 Authorization 选项卡来提供必需的必填标头字段。从Add to 下拉列表中选择Header。您还可以使用名为Headers 的下一个选项卡添加其他标题信息。 (例如,accept-headers)。

    编辑: 授权:

    标题选项卡 通常,当您注册到相关站点时,您应该会获得授权令牌(此处为 x-api-key)。您需要从初始调用的响应标头中找出该令牌的值。根据 Danny 分享的文档,一旦他们批准了您的请求,您就会从他们那里获得 x-api-key。

    编辑: 或者,您可以使用 Danny 在他的回答中建议的导入功能。归根结底,您需要将值添加为标题而不是查询参数。

    【讨论】:

    • 这在这种情况下实际上行不通,因为他们必须获取 API 令牌。
    • 我相信你和我指的是同一件事,丹尼。归根结底,两个答案都指向向请求添加标头(x-api-key 和接受)。不同之处在于您使用了 Postman 的导入功能,而我建议您手动执行。
    猜你喜欢
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    相关资源
    最近更新 更多