Fetch -API 返回 HTML 而不是 JSON

Posted

技术标签:

【中文标题】Fetch -API 返回 HTML 而不是 JSON【英文标题】:Fetch -API returning HTML instead of JSON 【发布时间】:2017-03-28 22:00:38 【问题描述】:

我有一个在 Postman 上测试过的 Spring REST API,它返回完全有效的 JSON。 但是,当我在前端 React 代码上调用相同的 API 时,它会返回 html。 这是我用来调用API的函数,

export function run(engine, mediaId, owner, target, access)
  let url = engine + "/" + mediaId + "?id=" + owner + "&targetId=" + target + "&access=" + access;

  return fetch(full_url,  credentials: "include",
                           headers: 
                             "Content-type": "application/x-www-form-urlencoded; charset=UTF-8"
                          )
    .then((response) => 

      return response.json();)
    .then((data) => 
        console.log(data);

    )
    .catch((error) => 
        console.log(error);
    );

我在调用Unexpected token < Thus when I check using response.text() 时遇到语法错误,我可以看到返回的数据是 HTML 而不是 JSON。我需要在我的前端代码中更改哪些 API 才能返回 JSON。

【问题讨论】:

请尝试“Content-Type”:“text/plain” 你得到答案了吗? 【参考方案1】:

标题不正确。 JSON 响应的有效标头:

headers: 
    'Accept': 'application/json',
    'Content-Type': 'application/json',
  

【讨论】:

没有仍然返回 html 对不起。你后来修改了你的问题,所以我错过了“意外令牌”这个词。 接受:application/json 是关键【参考方案2】:

如果您没有登录,有时 API 会返回 html 而不是 json,请同时确认

【讨论】:

如果发生这种情况,我们该怎么办? 这正是我的情况【参考方案3】:

还要仔细检查您在postman 输入栏旁边的下拉框中选择了正确的HTTP 方法。

【讨论】:

以上是关于Fetch -API 返回 HTML 而不是 JSON的主要内容,如果未能解决你的问题,请参考以下文章

Form表单------AJAX------Fetch

Php fetch 返回字符串而不是布尔“真/假”值

升级到 0.24.1 后,react native fetch 返回 Blob 而不是 JSON

react踩坑记录——使用fetch获取json数据报错

Smarty fetch方法

Fetch