Reactjs 从curl获取数据,但与axios提供空对象相同
我使用react axios从后端flask api服务器获取数据。当我做卷曲时,我得到了完美的数据作为响应,但当我尝试使用axios时,我得到了一个200的空对象 我已经尝试了很多可能的方法,但axios可能没有找到正确的方法 curl-X-GEThttp://10.214.79.37:5050/v1/vision/api/assets/search -H accept:application/json-H内容类型:application/json-d{\barraOnly\:true、\label\:\AAPL\,\missingId\:false、\searchFilter\:[],\source\:null} 下面是axios代码Reactjs 从curl获取数据,但与axios提供空对象相同,reactjs,curl,axios,Reactjs,Curl,Axios,我使用react axios从后端flask api服务器获取数据。当我做卷曲时,我得到了完美的数据作为响应,但当我尝试使用axios时,我得到了一个200的空对象 我已经尝试了很多可能的方法,但axios可能没有找到正确的方法 curl-X-GEThttp://10.214.79.37:5050/v1/vision/api/assets/search -H accept:application/json-H内容类型:application/json-d{\barraOnly\:true、\l
const apiUrl = 'http://10.214.79.37:5050/v1/vision/api/assets/search';
const SearchTicker = () => {
const [state, setState] = useState('');
const handleInputChange = async (event) => {
event.preventDefault();
setState(event.target.value)
axios.get(
apiUrl, { data: "{ \"barraOnly\": true, \"label\": \"AAPL\", \"missingId\": false, \"searchFilter\": [], \"source\": null}"},
{headers: { "Content-Type": "application/json"}},
).then(function (response) {console.log(response)});
// console.log(resp.data);
}
编辑:在接受您的输入后,我已经更新了下面的代码,但仍然没有获得数据。特定于浏览器调用的API本身是否存在问题
const apiUrl = 'http://10.214.79.37:5050/v1/vision/api/assets/search';
const SearchTicker = () => {
const [state, setState] = useState('');
const handleInputChange = event => {
event.preventDefault();
setState(event.target.value)
const header = {
"Content-Type": "application/json",
};
const param = {
barraOnly: true,
label: "AAPL",
missingId: false,
searchFilter: [],
source: null,
};
axios
.get(apiUrl, { params:param , headers: header},)
.then(response => console.log(response))
};
edit2:通过调试后端,我意识到参数没有进入api。不确定为什么因为您已经在使用异步但没有等待,请尝试添加等待,它会暂停执行,直到您从请求中获取数据
const apiUrl = 'http://10.214.79.37:5050/v1/vision/api/assets/search';
const SearchTicker = () => {
const [state, setState] = useState('');
const handleInputChange = async (event) => {
event.preventDefault();
setState(event.target.value)
let response = await axios.get(apiUrl, { data: "{ \"barraOnly\": true, \"label\": \"AAPL\", \"missingId\": false, \"searchFilter\": [], \"source\": null}"},
{headers: { "Content-Type": "application/json"}});
console.log(response);
}
由于您已经在使用async而不是await,请尝试添加await,它会暂停执行,直到您从请求中获取数据为止
const apiUrl = 'http://10.214.79.37:5050/v1/vision/api/assets/search';
const SearchTicker = () => {
const [state, setState] = useState('');
const handleInputChange = async (event) => {
event.preventDefault();
setState(event.target.value)
let response = await axios.get(apiUrl, { data: "{ \"barraOnly\": true, \"label\": \"AAPL\", \"missingId\": false, \"searchFilter\": [], \"source\": null}"},
{headers: { "Content-Type": "application/json"}});
console.log(response);
}
我想在这里补充两件事: 1.因为您没有等待任何东西,所以不需要将函数标记为异步。 2.axios的GET方法不支持数据,也不打算随请求一起发送正文。最好的做法是更新api句柄以接受POST。无论如何,如果不可能更改api,您可以按照axios本身的建议,将数据包装到params对象中来发送数据
axios.get(url,{params: {your data}, {header:{}});
试试这样的。
希望能有帮助 这里我想补充两件事: 1.因为您没有等待任何东西,所以不需要将函数标记为异步。 2.axios的GET方法不支持数据,也不打算随请求一起发送正文。最好的做法是更新api句柄以接受POST。无论如何,如果不可能更改api,您可以按照axios本身的建议,将数据包装到params对象中来发送数据
axios.get(url,{params: {your data}, {header:{}});
试试这样的。
希望能有帮助 我使用POST解决了这个问题,因为我意识到即使在使用了params之后,FlaskAPI服务器也没有获取数据参数。我更新了API以接收帖子,它就像一个魔咒。
感谢您的帮助。我使用POST解决了这个问题,因为我意识到即使在使用了params之后,Flask API服务器也没有使用数据参数。我更新了API以接收帖子,它就像一个魔咒。
谢谢你的帮助。你有什么错误吗?检查你的控制台。没有任何错误。你有任何错误吗?检查您的控制台。完全没有错误