如何解决获取和邮递员响应不同
我正在编写我的 react flask-rest 站点,并且遇到了异常行为......某事。因此,当我在地址 domain/api/users/1 处创建获取请求时,其中 1 = 邮递员中已删除 db 元素的 id,我的响应包含一个空元素(如代码中所写)。但是当我在 fetch 中创建这个请求时,我得到了错误 410。我检查了代码中元素的存在,但是这个响应不允许我的代码执行并且程序的所有逻辑都中断了。此外,在使用 fetch 时,有关此类请求的信息甚至不会出现在烧瓶日志中(使用邮递员时,一切都很好)。所以也许我写了很多不必要的信息,但我真的不明白有什么问题
python 代码:
def get(self,id):
u = User.query.filter_by(id=id).first()
if u:
return {
'id': u.id,'username': u.username,'email': u.email}
如果 id 不存在则返回 null(适用于不存在的 ID)
js-react 代码:
const [user,setUser] = useState({});
useEffect(() => {
fetch(`/api/users/${match.params.id}`)
.then((res) => res.json())
.then((data) => setUser(data))
// eslint-disable-next-line react-hooks/exhaustive-deps
},[]);
if (!user) {
return <h1>Same user dont exists</h1>;
}
return (
<>
<h1 className="mb-3">{user.username}</h1>
<div>{user.email}</div>
</>
);
解决方法
不确定这是否能解决您的问题,但您可以尝试添加一个 else: 块,以防用户 ID 不存在并返回一个空字典
def get(self,id):
u = User.query.filter_by(id=id).first()
if u:
return {
'id': u.id,'username': u.username,'email': u.email}
else:
return {}
# alternatively:
# return {"message": "User does not exist"},404
我不知道为什么这对你有用,但对你有用,但似乎根本不返回任何东西可能会破坏你的代码。或者,如果用户不存在则返回404 not found,根据状态码单独处理。
还有;我不知道您的服务器为什么或如何返回 410 GONE。如果我在没有明确返回的情况下测试路由,则会得到 200 OK 并且响应正文为“null”。涉及的代码可能比您在问题中发布的要多。
,我也许你可以试试
def get(self,id):
u = User.query.get(id=id)
if u:
return {
'id': u.id,'email': u.email}
return {"message": "User does not exist"},404
获取你或返回用户不存在。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。