gpt4 book ai didi

api - 使用Axios处理API调用错误

转载 作者:行者123 更新时间:2023-12-03 08:38:27 25 4
gpt4 key购买 nike

嗨,我正在使用Axios构建我的第一个API调用应用程序,我试图从中获取数据的API是Pokemon API数据库pokeapi.co。我的app.js文档中用于调用API和使用数据的代码如下所示:

app.get("/", function(req, res){
res.render("home.ejs");
});

app.get("/data", async(req, res) => {
var inputSearch = req.query.searchTerm;
axios.get('https://pokeapi.co/api/v2/pokemon/' + inputSearch) //The API
.then((body) => {
var pokeData = body.data;
res.render("data.ejs", {EJSpokeData: pokeData});
})
.catch((err) => {
res.send('Data not found', err.statusCode);
})
});`
这链接到ejs文档中的表单,如下所示:
<form action="/data" method="GET" id="searchForm">
<input type="text" id="searchBox" placeholder="Enter Pokemon name or ID number.." name="searchTerm">
<input type="submit" value="Submit" id="submit">
</form>
当用户在输入中输入神奇宝贝的名称或其ID号以传递给Axios时,就会调用该API,我的系统可以正常工作并返回所需的数据,但是该名称不能大写,因为中央API均为小写字母,因此大写名称将导致系统搜索API中未包含的值,并最终使应用程序超时,并显示错误消息“本地主机未发送任何数据”。

如果用户拼写错误的名称或输入API中没有的ID号,也会发生这种情况。另外,如果用户将输入字段留空,则当我的ejs文档尝试处理不存在的数据时会发生崩溃。如果get请求未返回任何数据,是否可以启动某种错误页面?如果输入字段为空,有什么方法可以防止提交请求被激活?

我试图在.catch部分重新呈现一个错误页面,但它似乎无法正常工作,有人可以帮忙吗?

最佳答案

我对表达完全一无所知,因此无法帮助您呈现事物,但是您可以帮助解决您的API问题。
如果我们想使用小写名称来调用API,那很简单!我们不需要关心用户在输入中键入什么内容,因为我们可以在调用API之前将其转换为小写形式:

var inputSearch = req.query.searchTerm.toLowerCase();
如果我们想忽略空字符串,可以使用条件语句。检查空字符串的方法有很多,但是最简单的方法就是说 if (myString) {...},因为空字符串的求值结果为 false,而所有其他字符串都是 true
if (inputSearch) {
/* ...axios... */
} else {
res.send("Empty search term");
}

关于api - 使用Axios处理API调用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64470250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com