首页 > 解决方案 > 从 curl 获取数据,但与 axios 相同,给出一个空对象

问题描述

我正在使用 react axios 从后端烧瓶 api 服务器获取数据。当我卷曲时,我得到了完美的数据作为响应,但是当我尝试使用 axios 时,我得到一个 200 的空对象

我已经尝试了很多我们做 axios 的可能方式(可能缺少正确的方式)

卷曲curl -X GET "http://10.214.79.37:5050/v1/vision/api/assets/search" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \"barraOnly\": true, \"label\": \"AAPL\", \"missingId\": false, \"searchFilter\": [], \"source\": null}"

axios代码如下

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。不知道为什么

标签: reactjscurlaxios

解决方案


由于您已经在使用async但尚未使用await,请尝试添加await执行,pauses直到您从请求中获取数据,

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);
    }

推荐阅读