获取和邮递员响应不同

如何解决获取和邮递员响应不同

我正在编写我的 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?