当 API 返回空数据时显示警告(Vue.js / Axios)

Posted

技术标签:

【中文标题】当 API 返回空数据时显示警告(Vue.js / Axios)【英文标题】:Showing warning when API returns empty data (Vue.js / Axios) 【发布时间】:2021-01-08 22:03:01 【问题描述】:

我对 Vue.js 和 Axios 很陌生。我正在通过搜索功能从 API 获取和显示数据,并试图弄清楚如何显示警告/警报或让用户知道 API 响应为空的内容。

观察结果:当搜索框中有匹配项时应用显示数据,但没有完全匹配时不显示任何内容

预期结果:当没有完全匹配时在前端显示文本或警报以指示“没有匹配”

      
      axios.get(`API LINK HERE`,

    
headers: 
      "x-rapidapi-host":"API HOST LINK HERE",
    "x-rapidapi-key":"API KEY HERE",
    "useQueryString":true
    ,"params":
    "format":"json",
    "date-format":"YYYY-MM-DD",
    "name":`$query`


    )
    
      .then(response => this.itemData = response.data)
        
    ```

【问题讨论】:

itemData 是一个数组吗? @mbesuma 请更新您的代码,以便它在您的问题中的格式正确且便于人们阅读。 【参考方案1】:

只需使用条件语句检查任何结果。

.then(response => if (response.data=="") // code here to alert user of empty response )

您可以将this.itemData 设置为表示空响应的消息或使用其他一些提醒用户的方法。

【讨论】:

【参考方案2】:

我对 Vue.js 不太熟悉,但我认为这更多的是关于 javascript,你可以这样做:

    axios.get(`API LINK HERE`,  headers: HEADERS)
      .then(res => 
          if (isEmpty(res.data) 
              alert("is empty");
           else 
              this.itemData = response.data;
          
      )
      .catch(error => alert("problem. try later")) // your error handling

如果你喜欢更多尝试和捕捉:

try 
    const res = await axios.get(`API LINK HERE`,  headers: HEADERS);
    const itemData = res.data;
    if (isEmpty(itemData) 
        alert("is empty");
     else 
        this.itemData = itemData;
    
 catch (error) 
    alert("my error handling");

【讨论】:

如果你正在考虑切换到打字稿,我建议你为你的 api 调用创建这样一个类:medium.com/@enetoOlveda/…

以上是关于当 API 返回空数据时显示警告(Vue.js / Axios)的主要内容,如果未能解决你的问题,请参考以下文章

当 BIRT 报告中的表为空时显示“无数据”消息

Vue JS - 如何更改鼠标悬停时显示的组件的位置

extjs 组合框在单击时显示空白列表

在提交表单 Vue.js 时显示 flash 消息

Laravel api在邮递员中返回值,但在Vue js中返回空数组

如果单击按钮时显示警告消息,则不显示更新的搜索结果列表