用邮递员调用DVLA MOT历史记录API时出现“缺少身份验证令牌”错误

时间:2019-11-05 22:19:28

标签: rest api post postman

注意-我对这一切非常陌生。抱歉,如果不清楚。

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

DVLA提供以下说明

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

入门

所有API接口均实现为静态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}

“注册”是车辆的注册号。

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

为了测试这是否可行,我将以下单个请求输入到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

实际结果:{“消息”:“缺少身份验证令牌”} {“消息”:“缺少身份验证令牌”}

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

  • 应用后必须使用+ v6(其他文档未列出)

  • 为什么“接受”和“内容类型”在文档中似乎可以互换使用

  • 参数的顺序是否重要

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

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

通读以下文档:

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

Postman

这将为您提供一个示例请求,说明其外观。从这里,您将能够添加自己的API令牌并发送请求。

答案 1 :(得分:0)

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

编辑: 授权: enter image description here

标题标签 enter image description here 通常,当您注册到有问题的站点时(这里为x-api-key),您应该获得授权令牌。您需要从初始调用的响应标头中找出该令牌的值。根据Danny共享的文档,一旦他们批准您的请求,您将从他们那里获得x-api-key。

编辑: 另外,您可以使用Danny在其答案中建议的导入功能。最后,您需要将值添加为标头而不是查询参数。