首页
学习
活动
专区
圈层
工具
发布

【技术布局】Rust Axum 如何优雅的返回数据

这一部分使用到的库主要为:axumtokioserdethiserror二、通用返回体在当前设计下,暂且假定只要服务器接收到客户端请求,统一返回状态码为200,返回的结构体中包含结果状态码、消息、内容三个部分.../ 成功信息 } } /// 错误响应 /// 指定错误码和错误信息 pub fn error(code: i32, message: String) -> Self...#[derive(Error, Debug)]pub enum ApiError { // 数据库错误,允许将 sea_orm::DbErr 转换为 ApiError #[error(transparent...(self) -> Response { // 根据错误类型生成相应的状态码和消息 let (status_code, message) = match &self {...; // 这里转化数据库异常为ApiError if option.is_none() { // 这里返回自定义的异常信息 return Err(ApiError::OtherError

1K12

websocket关闭指定原因

在 WebSocket 协议中,每次连接关闭都会携带一个 关闭码(close code) 和可选的 关闭原因(reason phrase)。这些关闭码由 RFC 6455 定义,表示连接关闭的原因。...1002 (Protocol Error): 协议错误。 1003 (Unsupported Data): 不支持的数据类型。...服务器繁忙 (1013) 如果服务端压力过大,可以选择发送此关闭状态,让客户端稍后重试。...为什么会收到 1006 状态? 1006 是由客户端生成的关闭码,通常用于无法与服务端正常通信的场景(例如网络中断)。建议在服务端日志中查看异常原因。 2. 如何向客户端发送自定义关闭状态?...1 session.close(new CloseStatus(4001, "自定义错误: Token 无效")); 客户端会在 onclose 事件中接收到此信息。 3. 如何避免意外关闭?

2.6K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【TypeScript】007-类型断言

    但是由于父类 Error 中没有 code 属性,故直接获取 error.code 会报错,需要使用类型断言获取 (error as ApiError).code。...大家可能会注意到,在这个例子中有一个更合适的方式来判断是不是 ApiError,那就是使用 instanceof: class ApiError extends Error { code: number...此时就只能用类型断言,通过判断是否存在 code 属性,来判断传入的参数是不是 ApiError 了: interface ApiError extends Error { code: number...将 any 断言为一个具体的类型 在日常的开发中,我们不可避免的需要处理 any 类型的变量,它们可能是由于第三方库未能定义好自己的类型,也有可能是历史遗留的或其他人编写的烂代码,还可能是受到 TypeScript...我觉得我是你,你也觉得你是我!

    45900

    Claude Code TypeScript开发子代理实战指南:构建你的类型安全守护者

    前置阅读推荐:如果你还不了解Claude Code子代理的基础知识,强烈建议先阅读我的上一篇文章《Claude Code子代理完全指南:从0到1构建你的AI编程军团》,它会帮你理解子代理的核心机制和配置方法...今天要分享的是我反复打磨的TypeScript开发子代理——这个配置能让Claude Code像一个精通类型系统的架构师,帮你构建真正类型安全的应用,从此告别运行时错误。...一、为什么TypeScript开发需要专属子代理?...Standards -启用严格规则的全面tsconfig.json配置 -集成TypeScript特定规则的ESLint -仅类型导入和正确的模块边界 -第三方库集成的声明文件 -带项目引用和增量构建的...${queryString}` : url; } } // 错误处理 class ApiError extendsError { constructor(public status: number

    27210

    HttpRetty:HTTP请求拦截库入门教程

    - 以及任何基于这些库构建的客户端为什么选择HttpRetty?...通用性 - 不依赖于特定的HTTP客户端库简单易用 - API设计直观,上手快速功能强大 - 支持各种复杂场景的模拟无侵入性 - 不需要修改被测试代码活跃维护 - 社区支持良好,持续更新我之前一直使用mock...上面的例子展示了HttpRetty的基本工作流程:激活HttpRetty注册URI和对应的响应发送HTTP请求(会被HttpRetty拦截)收到模拟的响应使用完毕后关闭HttpRetty在单元测试中使用...API错误的函数:```pythonuser_service.pyimport requestsclass APIError(Exception): passdef get_user(user_id...== 404: return None raise APIError(f"API error: {str(e)}")```使用HttpRetty测试错误处理:```

    20610

    前端 JS 异常那些事

    error 对象只有一个 message 信息,很多时候对于错误的细分是很不好使,一般可以通过扩展这个错误对象,抛异常时抛出自定义的错误对象,在异常处理或时实现更精细化的处理 class ApiError...const err = new ApiError('xxx', 404) err instanceof ApiError 一种常见的应用就是在 axios 处理的异常中抛出一个扩展的 ApiError...接口 http 返回 http code 200 而响应体 code 不等于 0 也属于不抛异常而是返回特定信息的方式 const res = await api() if (res.code !...此时 catch 块会接收到一个包含错误信息的对象。try-catch 使用时也可以搭配 finnally 使用。 finally 一经使用,其代码无论如何都会执行。...入参和 errorHandler 一样,它是 vue 组件的钩子函数,作用是捕获来自后代组件(注意不包含本组件)的错误。

    1.7K10

    我司是怎么封装 axios 来处理百万级流量中平时少见过的问题~

    本文 GitHub https://github.com/qq449245884/xiaozhi 已收录,有一线大厂面试完整考点、资料以及我的系列文章。...本文是我们团队每周分享的内容,该内容是由导师整理分享的。Eaxios 是我们前端团队自己在用的库,由导师封装的,因为其他小伙伴对它有所好奇,所以才有该篇的分享内容。...,最简单的就是消息提醒 请求成功:前端拿到数据后更新界面 但是,现有的 Axios 库对于异常结果没有提供较好的封装,Axios Promise catch 里包含各种类型的错误,而且没有提供错误码来识别请求失败的原因...eaxios 的请求处理函数 then 只会接收到 transformResponse 转换后的数据,对于网络、超时、服务端异常和业务异常等问题,会在 catch 接收一个 EaxiosError 类型的错误对象...错误处理函数可以根据错误码 code 来处理异常,code 可能的值为 UNKNOWN、REQUEST_OFFLINE、REQUEST_TIMEOUT、SERVER_ERROR、RESPONSE_INVALID

    1.1K10

    byteTCC框架--关于接口返回问题的讨论

    这里记录下交流的这个过程,没有格式的是我提问的,有引用格式的是作者的回答: 对话 当调用失败后,我想拿到这个错误堆栈信息,怎么获取呢?我想把错误信息拿到存日志或者是返回 ?...我个人比较推荐的做法是,就象你调用dubbo接口一样,如果没有实质的信息需要返回,那就别返回信息了。没异常就表示成功了,有异常consumer就会收到一个异常信息。...至于页面显示什么,那是consumer收到成功/错误之后自己决定的,而不应该由provider来决定页面来显示什么 provider端接口返回一个“调用成功”、“调用失败”这中信息,是完全没有意义的。...在此基础上,你可以细化一下,比如你们希望所有的请求都返回200,但是错误时响应体内有failure-code,比如00000是成功,00001是创建订单失败,00002表示库存不足等等,可以考虑通过Filter...的CompensableCoordinatorController的做法,出错时返回500,然后在header中加上错误的类型 注意,是说你的Filter可以参考CompensableCoordinatorController

    1.2K30

    Network-Emulator Network-Emulator-Toolkit网络模拟器使用详细介绍

    有时候,我们期望仅通过模拟操作影响来自某个客户端与服务器的数据交互,但是不影响服务器同其它客户端的交互。这个可通过包过滤器(packet filter)和虚拟链路来实现。...2、 新建Filter 入口:菜单栏 Configuration -> New Filter 或工具栏的快捷按钮 ? ?...说明: 真实世界中,当数据包经过网络传输时,包中的一到多个字节(bit)数据可能发生错误。 No Error:不模拟传输错误。...Random error:根据给定的比例,模拟随机发生传输错误。 G-E error:发生传输错误遵循Gilbert-Elliot Model, 模型,由两个状态组成:好的状态和坏的状态。...说明: 延迟来自某应用发送的数据包被另一个应用程序接收到的时间。

    5K30

    Next.js 使用 Hono 接管 API

    、错误处理、中间件等等功能,又得花费不小的功夫,所以 Next.js 的 API Route 更多是为你的全栈项目编写一些简易的 API 供外部服务,这也可能是为什么 Next.js 宁可设计 Server...而是在根目录下创建名为 server 的目录,并将有关后端服务的工具库(如 db、redis、zod)放置该目录下以便调用。...ApiError return c.json( { code: 500, message: '出了点问题, 请稍后再试。'...替换原生 Fetch 库​ hono 自带的 fetch 或者说原生的 fetch 非常难用,为了针对业务错误统一处理,因此需要选用请求库来替换,这里我的选择是 ky,因为他的写法相对原生 fetch...也说说我为什么会选用 Hono.js 作为后端服务, 其实就是 Next.js 的 API Route 实在是太难用了,加之轻量化,你完全可以将整个 Nextjs + Hono 服务部署在 Vercel

    1.3K10

    kubernetes分析ExitCode

    01 问题 最近总有开发小伙伴来找我,为什么我的容器总退出呢,在哪能看到原因。故写篇文章整理下docker退出的状态码。...Exit Code 1 程序错误,或者Dockerfile中引用不存在的文件,如 entrypoint中引用了错误的包 程序错误可以很简单,例如“除以0”,也可以很复杂,比如空引用或者其他程序 crash...cgroup 限制杀掉进程还是因为节点机器本身资源不够导致进程死掉,都可以从系统日志中找到记录( journalctl -k ) Exit Code 139 表明容器收到了SIGSEGV信号,无效的内存引用...,对应kill -11 一般是代码有问题,或者 docker 的基础镜像有问题 Exit Code 143 表明容器收到了SIGTERM信号,终端关闭,对应kill -15 一般对应docker stop...Exit Code 1 和 255 这种可能是一般错误,具体错误原因只能看容器日志,因为很多程序员写异常退出时习惯用 exit(1) 或 exit(-1),-1 会根据转换规则转成 255

    3.9K20

    Kubernetes分析ExitCode

    问题 最近总有开发小伙伴来找我,为什么我的容器总退出呢,在哪能看到原因。故写篇文章整理下docker退出的状态码。...Exit Code 1 程序错误,或者Dockerfile中引用不存在的文件,如 entrypoint中引用了错误的包 程序错误可以很简单,例如“除以0”,也可以很复杂,比如空引用或者其他程序 crash...cgroup 限制杀掉进程还是因为节点机器本身资源不够导致进程死掉,都可以从系统日志中找到记录( journalctl -k ) Exit Code 139 表明容器收到了SIGSEGV信号,无效的内存引用...,对应kill -11 一般是代码有问题,或者 docker 的基础镜像有问题 Exit Code 143 表明容器收到了SIGTERM信号,终端关闭,对应kill -15 一般对应docker stop...Exit Code 1 和 255 这种可能是一般错误,具体错误原因只能看容器日志,因为很多程序员写异常退出时习惯用 exit(1) 或 exit(-1),-1 会根据转换规则转成 255

    5.4K10

    Flutter网络请求和数据解析

    一:前言 - 什么是反射机制,Flutter为什么禁用反射机制? ----       在Flutter中它的网络请求和数据解析稍微的比较麻烦一点,因为Flutter不支持反射机制。...大概知道之后,再说一点就是其实单纯的Dart语言是支持反射机制的,只不过Flutter把它禁止了而已,那我们得追究一下 为什么Flutter要禁止Dart的反射机制呢?      ...Flutter版本变化的,它们之间版本是相互有影响的,我没记错在执行命令生成g.dart文件的时候,版本不对还有错误产生,具体的错误我之前也忘记没有收集,在这就只能大概的提一句,要真的遇上问题的小伙伴,...【我在这里-为了便利使用json_serializable库】       有几个小地方需要我们注意下,标注出来了,处理完之后你需要的就只是复制了。      ...= null) { failure(Exceptions(result.code!, "没有相关数据!!"))

    1.8K10

    Claude Code文档大师子代理实战指南:打造你的技术文档专家

    前置阅读推荐:如果你还不了解Claude Code子代理的基础概念,强烈建议先阅读我的上一篇文章《Claude Code子代理完全指南:从0到1构建你的AI编程军团》,它会帮你理解子代理的核心机制和配置方法...今天要分享的是我精心优化的文档编写子代理——这个配置能让Claude Code像一个专业的技术文档工程师,从API文档到代码注释,从用户手册到架构设计,帮你构建清晰、完整、易维护的文档体系。...一、为什么文档编写需要专属子代理?...UserNotFound 用户不存在 * @apiError Unauthorized 未授权访问 * @apiError InvalidParameter 参数格式错误 * * @apiErrorExample...专注于清晰性、完整性,并保持与代码库演化的同步,同时确保所有用户的可访问性。 2.2 核心概念通俗解释 // 1. 什么是API文档?

    1.1K10
    领券