Marvel API 和 Insomnia(或 Postman):如何传递所需的哈希值?

Posted

技术标签:

【中文标题】Marvel API 和 Insomnia(或 Postman):如何传递所需的哈希值?【英文标题】:Marvel API and Insomnia (or Postman): how do I pass the hash value that's required? 【发布时间】:2019-03-11 06:01:51 【问题描述】:

我是一个相对较新的 javascript 程序员,我正在试验 Marvel API(我需要访问一个项目的图像)并且在理解需求方面遇到了一些麻烦。

据我了解,从服务器端应用程序调用 API 时,您需要传递 hashts(我猜是时间戳)。但我在文档中没有看到使用客户端应用程序时需要这样做。

我尝试使用 Insomnia 进行一些基本的端点测试,并收到消息 "You must provide a hash."。显然我也需要hash 来进行客户端访问?

我看过一些 NodeJS 示例,这些示例向您展示了如何生成 hash(例如,https://www.raymondcamden.com/2014/02/02/Examples-of-the-Marvel-API),但对于客户端却没有(我可以找到)。我也不知道如何在 Insomnia(或 Postman)中生成这个。任何指向正确方向的指针都将不胜感激。

我还想问一下authorized domains 在从本地机器访问 Marvel API 时扮演什么角色。我需要将localhost 添加到此列表中吗?

感谢您的帮助!

【问题讨论】:

您至少获得了您的 api 密钥吗? 是的——公共的和私有的,虽然我不确定私钥在哪里发挥作用。我从网络上的示例中看到,可以仅使用公钥访问 API 客户端——所以我正在尝试设置它。但我不知道为什么它不适用于像 Postman/Insomnia 这样的 API 测试应用程序——它们不是模拟客户端调用吗?我发现以下文章引用了使用 Postman 调用 Marvel,但他必须生成 hashts 值才能传递给 Postman - 我不清楚他为什么需要,如果 Postman 模拟客户,或者如何他生成了那些...... medium.com/@DKUSHandOJ/apis-and-postman-deliver-184ce17bf631 Postman 不会公开 api 来为您生成哈希(我认为)。您只能使用内置的加密类型库在服务器端执行此操作。因此,也许可以找到一个您可以通过邮递员脚本调用的服务来传递参数(ts + pub + priv)并取回您可以使用的哈希值,但是我建议您不要这样做,因为您将私钥暴露给服务应该是秘密的。 不确定是否可以直接使用 localhost。也许可以尝试ngrok.com 来帮助您通过隧道访问您的本地主机并获取一个您向他们注册的网址。 【参考方案1】:

按照以下步骤操作:

    选择一个 API 端点。例如:https://gateway.marvel.com:443/v1/public/characters 使用 ts 的查询值。 ts 可以是时间戳或任何长字符串。 例如:ts=thesoer 通过代码或最好在线生成ts+privatekey+publickey 的MD5 哈希。 eg: md5(ts + privKey + pubKey) 对于 md5 哈希:http://www.md5.cz/ 加入点。 URL?ts=val&apikey=key&hash=md5Hash。 例如。 https://gateway.marvel.com:443/v1/public/characters?ts=thesoer&apikey=001ac6c73378bbfff488a36141458af2&hash=72e5ed53d1398abb831c3ceec263f18b

【讨论】:

我按照这些步骤操作并在此处遇到 401 错误更多详细信息:***.com/questions/67789504/…【参考方案2】:

将必备脚本添加到您的邮递员集合中。

var pubkey = "your_public_key";
var pvtkey = "your_private_key";
var ts = new Date().getTime();

pm.environment.set("ts", ts)
pm.environment.set("apikey", pubkey)

var message = ts+pvtkey+pubkey;
var a = CryptoJS.MD5(message);
pm.environment.set("hash", a.toString())

然后你就可以这样打电话了

https://gateway.marvel.com/v1/public/characters?ts=ts&apikey=apikey&hash=hash

请参阅this 收藏。

关于您的授权域,添加您的公共 IP。

【讨论】:

非常感谢,但我认为 pm.environment.set 已经过时了。我更改了 postman.setEnvironmentVariable 并且它可以工作 你太牛了!非常感谢。 @dougfabris 用 pm 测试,仍然有效(使用最新版本的邮递员)。

以上是关于Marvel API 和 Insomnia(或 Postman):如何传递所需的哈希值?的主要内容,如果未能解决你的问题,请参考以下文章

错误:尝试发出 localhost 请求时在 Insomnia 上出现 SSL 连接错误

配置ELK添加marvel插件

elasticsearch安装marvel插件

“你必须提供一个哈希值。”使用 API 下载数据时出错(在 R 中)

为什么我不能从奇迹中读到这个网络API?

Insomnia rest客户端测试工具安装