【问题标题】:How to get application header to work如何让应用程序标头工作
【发布时间】:2018-08-18 14:42:14
【问题描述】:

我一直在尝试格式化 API 以获取“application/json”内容,但我仍将其作为“text/html”接收(这是他们的默认设置)。

这是我在下面写的 API 代码:

var request = new XMLHttpRequest();
request.open('GET', 'https://icanhazdadjoke.com/');
request.setRequestHeader('Accept', 'application/json');
request.setRequestHeader('User-Agent', 'my email');
request.onload = function(){
    data = JSON.parse(request.responseText);
    console.log(data);
}
request.send();

请记住,我是一个初学者,昨天刚刚了解了一点 API。

【问题讨论】:

  • 试试request.setRequestHeader('Content-type', 'application/json');
  • 我还是得到了 html 文本 :(

标签: javascript xml api request xmlhttprequest


【解决方案1】:

https://icanhazdadjoke.com/ 不是 API URL,它是获取 html 和其他资产的网站页面,您需要调用 API,它实际上会为您提供 JSON 作为响应。

例如试试:https://jsonplaceholder.typicode.com/posts

request.setRequestHeader('Content-type', 'application/json');

应该在服务器实际为您提供 JSON 数据时发挥作用。

【讨论】:

  • 当浏览他们的网站时,他们说只要 HTML 接受标头设置为“application/json”,它就会以 JSON 数据回复。我不是 100% 确定 ..
  • @RamanKaur,不,不是。网站本身可能使用某种 API 来获取他们的数据。默认情况下,RESTful API 应该是 JSON 和/或 XML。如果您打开开发者工具 -> 网络选项卡.. 您可以看到他们的请求以及该站点正在加载什么样的数据
  • 啊,好吧,我想我现在明白了。所以问题基本上是api url实际上没有json数据?
  • 是的,该 URL 响应首先没有返回 JSON,它加载了 HTML 文件。您需要某种返回 JSON 的 URL 才能使其正常工作。
  • 哦,这对清理它有很大帮助,谢谢!
【解决方案2】:

如果有人找到这个帖子,上面的答案是不准确的。此端点:https://icanhazdadjoke.com/,当使用以下请求标头请求时:

Accept: "application/json",

将返回预期的数据格式,而不是网页。

即使我在 Chrome 控制台中运行原始海报的代码,我也得到了预期的结果。您在使用它时可能遇到了一些中断或错误。

这些笑话太可怕了。

【讨论】:

    猜你喜欢
    • 2018-06-24
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    • 2020-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多