Reactjs 获取类型错误:获取失败
我无法获取数据,也不知道我做错了什么。若我在浏览器中粘贴链接,我会得到很好的响应,所以api键是好的。格式是xml格式,所以我也转换了它,如下面所示。在“响应标题”中,我得到状态200 OKReactjs 获取类型错误:获取失败,reactjs,xml,api,fetch,Reactjs,Xml,Api,Fetch,我无法获取数据,也不知道我做错了什么。若我在浏览器中粘贴链接,我会得到很好的响应,所以api键是好的。格式是xml格式,所以我也转换了它,如下面所示。在“响应标题”中,我得到状态200 OK import React, { useEffect } from 'react' function Api() { useEffect(() => { fetch("https://www.goodreads.com/author/list/18541?format=xml
import React, { useEffect } from 'react'
function Api() {
useEffect(() => {
fetch("https://www.goodreads.com/author/list/18541?format=xml&key=TftQypHkudfH0VZcukEWtg")
.then(res => res.text())
.then(data => {
let parser = new DOMParser()
let xmlDoc = parser.parseFromString(data, 'text/xml')
console.log(xmlDoc)
})
.catch(err => console.log(err));
}, [])
return (
<div></div>
)
}
export default Api
import React,{useffect}来自“React”
函数Api(){
useffect(()=>{
取回(“https://www.goodreads.com/author/list/18541?format=xml&key=TftQypHkudfH0VZcukEWtg")
。然后(res=>res.text())
。然后(数据=>{
let parser=new DOMParser()
让xmlDoc=parser.parseFromString(数据'text/xml')
console.log(xmlDoc)
})
.catch(err=>console.log(err));
}, [])
返回(
)
}
导出默认Api
这是一个片段
编辑
我猜在控制台中,您会收到一个关于
CORS策略的错误
您需要设置一个代理以克服此问题。该方法简单易行,并对该方法作了简要说明
编辑:另一种设置代理的方法如下:
作为开发人员依赖项安装
npm安装--保存开发人员http代理中间件
然后在项目的src
目录中创建一个名为setupProxy.js
的文件
将以下代码粘贴到此处:
constproxy=require('http-proxy-middleware'))
常量服务器URL=https://www.goodreads.com';
常量选项={
目标:服务器URL,
更改来源:正确
};
module.exports=函数(应用程序){
应用程序使用('/api/*',代理(选项));
app.use('/api/author/list/*',proxy(options));
};
然后按如下方式获取您的请求:
useffect(()=>{
fetch(“/api/author/list/18541?format=xml&key=TftQypHkudfH0VZcukEWtg”)
。然后(res=>res.text())
。然后(数据=>{
let parser=new DOMParser()
让xmlDoc=parser.parseFromString(数据'text/xml')
console.log(xmlDoc)
})
.catch(err=>console.log(err));
}, [])
例如,如果需要在同一源中获取不同的URL模式
https://www.goodreads.com/author/somethingelse/id
在代理URL列表中添加一个新条目,如下所示:
app.use('/api/author/somethingelse/*',proxy(options))代码>所以基本上,我需要做的是:
1) 添加“代理”:https://www.goodreads.com“
到my package.json
2) 从fetch函数中删除该url片段,因此它应该如下所示:
fetch(“/author/list/18541?format=xml&key=TftQypHkudfH0VZcukEWtg”)
与此相反:
fetch(“https://www.goodreads.com/author/list/18541?format=xml&key=TftQypHkudfH0VZcukEWtg“”
并且不再有CORS策略和错误:)Tnx!我已经通过下面写的两个步骤成功地完成了,但无论如何还是要感谢:)我不知道我必须将“”放在代理中,我认为应该像他们写的那样,使用localhost(“)