【问题标题】:Sending a POST request to API with localhost使用 localhost 向 API 发送 POST 请求
【发布时间】:2019-10-08 16:56:47
【问题描述】:

我正在使用我的本地主机地址向 API 发送图像,但由于某种原因它无法识别图像。如果我在谷歌上使用链接,它工作正常。代码如下所示:

unirest.post(requestString)
   .header("X-RapidAPI-Key", API_KEY)
   .field("urls", "http://localhost:4000/uploads/1570544614486-test.jpg")
   .field("album", ALBUM_NAME)
   .field("albumkey", ALBUM_KEY)
   .field("entryid", entryId)
   .end(result => {
       console.log(result.body);
});

我相信这将在域上工作一次,但我现在需要它来工作以进行测试。如何使用我的本地主机完成这项工作?

【问题讨论】:

  • 您在浏览器 Javascript 控制台中是否有任何错误? ( F12 ) 你可能有跨域问题。
  • 您希望远程 API 如何解析localhost URL?
  • 错误:'空结果,可能没有在图像中检测到人脸!'- 这是我得到的错误
  • @esqew 所以,不可能吗?
  • 如果您的图像托管在您的本地主机服务器上,并且您正在发送一个类似 (localhost:3000/img/your_image.png) 的 url,它将无法正常工作。 localhost指的是你自己的电脑,API无权访问。

标签: javascript node.js api express unirest


【解决方案1】:

您尚未准确指定要使用的 API,因此您的里程可能会因不同的 API 而异。

但是,根据您的错误消息,我确定您正在尝试利用 Lambda Face Recognition and Face Detection API via RapidAPI。此 Web 服务的(链接的)文档清楚地表明您尝试与上面的 localhost URL 一起使用的 urls 参数实际上是为了保存一组以逗号分隔的 URL可公开访问的图像文件。在这种情况下,远程 API 不可能解析 localhost,因为 (a) 它不可能知道 IP localhost 应该指的是什么,并且 (b) 你的 localhost 很可能在这里没有'不响应来自更广泛 Internet 的 HTTP 请求。

改为修改您的请求以使用files 参数(类型binary)为您的图片上传原始二进制数据。

【讨论】:

  • 谢谢。是的,这就是我所做的。我只是使用正则表达式来获取文件名并使用 fs 链接到路径。
猜你喜欢
  • 1970-01-01
  • 2017-10-16
  • 2019-10-19
  • 1970-01-01
  • 2016-05-12
  • 2015-01-26
  • 2015-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多