Reactjs 获取类型错误:获取失败

Reactjs 获取类型错误:获取失败,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

我无法获取数据,也不知道我做错了什么。若我在浏览器中粘贴链接,我会得到很好的响应,所以api键是好的。格式是xml格式,所以我也转换了它,如下面所示。在“响应标题”中,我得到状态200 OK

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(“)