reactjs - Fetch 和 postman 响应不同
问题描述
我正在写我的反应烧瓶休息网站,并遇到了一些不寻常的行为...... 因此,当我在地址域/api/users/1 处创建 get 请求时,其中 1 = postman 中已删除 db 元素的 id 我的响应包含一个空元素(如代码中所写)。但是当我在 fetch 中创建这个请求时,我得到了错误 410。我检查了代码中是否存在一个元素,但是这个响应不允许我的代码执行并且程序的所有逻辑都中断了。此外,当使用 fetch 时,有关此类请求的信息甚至不会出现在烧瓶日志中(使用 postman 时,一切都很好)。所以也许我写了很多不必要的信息,但我真的不明白哪里错了
蟒蛇代码:
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反应代码:
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”。涉及的代码可能比您在问题中发布的更多。
推荐阅读
- python-3.x - 服务器客户端操作系统错误之间的连接错误
- sql - 根据源 carValue 更新目的地中的 CarValue 列
- wpf - 如何将 xaml 样式分组为树结构以便于选择?
- react-native - 文本字段专注于点击外部组件
- java - 另一个服务 JAR 正在创建 Spring 的自动配置(创建名称为 'mongoTemplate' 的 bean 时出错)
- firebase-authentication - android 应用的用户没有出现在 Firebase 中
- c - pthread_join 根据随机全局变量值挂起
- c++ - 为什么在使用临时对象访问时引用类型是左值?
- java - 如何在同一行中获得不同的输入?
- date - 发出返回状态更改日期的建筑集会查询