许久没有写博客了,有些惶恐地打开这个再熟悉不过的编辑器。...场景:要对一个涉及到敏感数据(账号、密码)的接口进行加密后返回 由于之前没有相关的经验,所以先在网上搜罗了一阵,这篇博客不错https://www.cnblogs.com/codeon/p/6123863...Base64编码,看名字就可以知道这是一种编码方式,编码方式有很多ASCII、Unicode、UTF-8等,Base64编码会把3字节的二进制数据编码为4字节的文本数据,长度增加为原来的4/3。...MD5摘要算法,这是一种散列函数,提取数据的特征,输出是不可逆的散列值,用于代表某信息A而又不暴露信息A的内容,一般用于数字签名场景中。...加密方式的确定:最后我的接口中的敏感明文信息通过AES进行加密,最后将密文返回给客户端。
oracle的minus返回第一个表中有、第二个表中没有的数据 CREATE TABLE hovertree_union_1 ( id INT, val VARCHAR(10) );
Access-Control-Allow-Origin:':'*', }, "body": res }; }};需要做的主要就是把要返回的数据用...zlib给压缩一下,然后用base64编码,最后通过集成响应方式吧编码数据输出给api网关。...网关配置,在基础配置中不知道什么时候出现了“响应压缩”选项,还是默认选中的。...2 响应压缩声称对1k以内的内容不压缩,实际上对于非集成响应的SCF也没有兑现。3 不管是否使用集成响应,api网关都不能正确吐出content-length头部了。...绕过这些bug的一个恶心的方式是scf总是压缩数据后输出,让api网关总是忽略相应压缩直接把压缩好的数据送出,此时cos会保存下来压缩过的文件,因此使用数据的程序需要自行解压数据。
中我对比了 Axios,在小型项目的情况下,使用 Fetch API 只需要几个简单的 API 调用,Fet 是一个很不错的解决方案。...请求的结果 Fetch API 返回一个 Promise。...这就是为什么我总是使用 .then() 和回调函数来处理响应的原因: fetch(...).then(response => { // process the response } 但是,如果你处于异步函数中...: 如何检查 Fetch API 响应的状态码 发送 POST,PATCH 和 PUT 请求时,我们通常对返回状态代码感兴趣: fetch(...).then(response => { if (response.status...== 200){ // all OK } else { console.log(response.statusText); } }); 如何获取 Fetch API 响应的简单值
POST — 创建资源,向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。...保持向后兼容性总是一个很好的做法,这样如果你改变 API 版本,消费者就有足够的时间进入下一个版本。...使用分页 当您公开可能返回大量数据的 API 时,必须使用分页,如果没有进行适当的负载平衡,消费者可能最终会关闭服务。我们需要始终记住,API 设计应该是完整的证明和傻瓜证明。...支持的格式 选择 API 的响应方式也很重要。大多数现代应用程序都应该返回 JSON 响应,除非你有一个仍然需要获得 XML 响应的遗留应用程序。...使用正确的错误信息 保持应用程序发送的一组错误消息并以正确的 id 对其做出响应总是一个很好的做法。
Fetch API,W3C的正式标准,是XMLHttpRequest的最新替代技术: 基于 Promise 设计 语义化API(Header、Request、Response) 良好的数据转换接口(text...()、json()) React技术栈中的一员.....Cookie; response常用方法说明: status: 响应状态码(例如:200,成功); statusText: 与状态码一致的状态信息; ok:表示响应成功(200~299)还是失败; headers...: 响应中的Headers对象; bodyUsed: 标识response是否已经被读取过; 注:Fecth API为保持对未来“流”API的支持, 限制response只能被读取一次;...json(): 返回被解析为JSON格式的Promise对象; text(): 返回被解析为String格式的Promise对象; Headers常用方法说明: append(name,value) delete
WebFlux 最为人所诟病的是数据库的支持问题,毕竟数据是一个应用的生命,我们接触的大部分应用程序都是有数据库的,而 WebFlux 在这一方面的支持行一直比较弱,这也是大家总是吐槽它的原因。...Spring 官方在 Spring5 发布了响应式 Web 框架 Spring WebFlux 之后急需能够满足异步响应的数据库交互 API,不过由于缺乏标准和驱动,Pivotal 团队开始自己研究响应式关系型数据库连接...Flux,里边包含多个对象,还有一个我设置了响应的 Content-Type 为 text/event-stream,通过响应式流返回数据,具体参见【服务端推送数据,除了 WebSocket 你还能想到啥...,然后调用 flatMap,在 flatMap 中对数据进行删除处理,删除完成后,给出一个 200 的响应码,如果查询的时候没有查询到数据,就给一个 404 响应码。...可以看到,删除成功后,响应码为 200: ? 删除失败后,响应码为 404: ?
分页结果 API 中的分页是通过 Link 头标准处理的: curl -i https://sentry.io/api/0/projects/1/groups/ HTTP/1.0 200 OK Date...&cursor=1420837533:0:0>; rel="next"; results="true" 如果受到支持,将始终为上一页和下一页返回游标,即使这些页面上没有结果也是如此。...分页示例 以下是使用此 API 端点的分页示例: https://docs.sentry.io/api/events/list-an-issues-events/ 此示例中的 HTTP 请求针对该问题返回...100 个事件,并在响应中包含以下 link 头: <https://sentry.io/api/0/issues/123456/events/?...请求 所有 API 请求都应该以 /api/0/ 前缀发出,并将返回 JSON 作为响应: curl -i https://sentry.io/api/0/ HTTP/1.0 200 OK Date:
在完成了登录和注册视图之后,需求中还需要管理员可以管理用户列表,所以就需要完成基础的增删改查操作 权限 在注册和登录操作中,我们的API对谁可以编辑或删除项目没有任何限制。...— 将返回 HTTP 403 Forbidden 响应。 请求的身份验证没有成功,并且最高优先级的身份验证类确实使用了WWW-Authenticate头。...如果你使用一个常规的APIView,你需要自己调用分页API来确保你返回一个分页的响应。...page=4 响应 HTTP 200 OK { "count": 1023 "next": "https://api.example.org/accounts/?...limit=100&offset=400 响应 HTTP 200 OK { "count": 1023 "next": "https://api.example.org/accounts
不要返回纯文本 尽管并非强制规定的,但大多数REST API通常约定使用JSON作为数据格式。然而,仅返回包含JSON格式字符串的响应体是不够好的。您还应该指定Content-Type标头。...在响应体中返回错误详情 当API服务器处理错误时,将错误详细信息包含在JSON主体中可以帮助使用者进行调试,这是是非常方便的,如果您还能说明哪些字段受到了错误的影响,那就更好了!...特别关注 HTTP 状态码 这一点非常重要,如果你从这篇文章中只记住一件事,那可能就是它了。 你的API最糟糕的事情莫过于返回一个带有200 OK状态码的错误响应。...曾经我不得不集成一个API,它对每个响应都返回200 OK,并通过status字段来表示请求是否成功: { "status": "success", "data": {} } 尽管HTTP...状态码返回200 OK,但我不能完全确定它有没有处理我的请求失败。
不要返回纯文本 虽然返回 JSON 数据格式的数据不是 REST 架构规范强制限定的,但大多 REST API 都遵循这条准则。...在响应中返回错误详情 当 API 服务器处理错误时,如果能够在返回的 JSON body 中包含错误信息,对于接口调用者来说,会一定程度上帮助他们完成调试。...你可能知道,HTTP 中你可以返回带有 200 状态码的错误响应,但这是十分糟糕的。不要这么做,你应当返回与返回错误类型相一致的具有一定含义的状态码。...当然可以,不过让我讲一个故事: 我曾经使用过一个 API,对于它返回的所有响应的状态码均是 200 OK,同时通过响应数据中的 status 字段来表示当前的请求是否成功,比如: {..."status": "success", "data": {} } 所以,虽然状态码是 200 OK,但我却不能绝对确定请求是否成功,事实上,当错误发生时,这个 API 会按如下代码片段返回响应
在我之前的工作经历中,很少注意到http响应状态码这个数据。...因为大多数情况都是成功的话,返回200,不成功的话也是返回200(通过业务状态码来区分不同原因), 只有在接口请求失败,或者说服务器故障的时候会处理一下400和500系列的响应状态码。...在对接Jira API文档的过程中,我遇到了很多种之前没有接触过的200系列的http协议响应状态码。Jira API 是通过http,响应状态码来表示业务处理状态,他并没有使用业务状态码。...所以,在对接的过程中,需要单独处理每个接口的http响应状态码。 在POST和PUT全球方法的接口, 很少能看到200的状态响应码。下面分享一下,我常见到的201和204状态响应码的标准规范。...一直以来的概念就是获取数据用get,修改数据用post。但是在接触Jira API文档的过程中,我仔细地看了看post和PUT的区别。
什么是Axios Axios 是一个基于 promise 网络请求库,作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。...Axios文档地址:https://www.axios-http.cn/ 特性: 从浏览器创建 XMLHttpRequests 从 node.js 创建 http 请求 支持 Promise API 拦截请求和响应...转换请求和响应数据 取消请求 自动转换JSON数据 客户端支持防御XSRF 使用方式 Axios引入 外部引入cdn,以下两种方式任选一种即可。...{ // `data` 由服务器提供的响应 data: {}, // `status` 来自服务器响应的 HTTP 状态码 status: 200, // `statusText...调用 axios 方法得到的返回值是 Promise 对象 axios({ // 请求方式 method: 'GET', // 请求的地址 url: '接口地址
API 使用的响应。...例如,你可以使用 Cache API 存储返回再之后使用,可能从 Service Worker 返回一个图像、脚本或 CSS 文件。...凭证控制 XMLHttpRequest 总是发送浏览器 cookie,Fetch API 不会发送 cookie,除非你显式地在第二个参数 init 对象中设置 credentials 属性。...数据流 XMLHttpRequest 将整个响应读入内存缓冲区,但是 fetch() 可以流式传输请求和响应数据,这是一项新技术,流允许你在发送或接收时处理更小的数据块。...,只有当网络没有响应或请求被中断时,才会发生拒绝。
需要特别注意的是,由于Python的GIL导致多线程总是单核执行的”特点”,tornado处理http请求时,若某个请求的后端响应有阻塞现象(如从DB或磁盘读数据导致处理时间很长),则会导致其他http...,没有多大的实战意义。...city=xxx 根据上面的场景,由于我们用tornado实现的web server接到client的请求后,还要去另一个API接口请求基础数据,而后者在返回前,tornado会block,所以,这种场景下...,tornado最好以异步方式请求那个提供基础数据的API,避免不可控的后端拖累tornado的响应性能。...,进程控制权会返给主线程, 故即使该函数需要较长运行时间,tornado的主线程也可以继续处理其它请求 在Python 2.x版本的语法中,generator中不允许用return返回函数的返回值, 必须用
通用输出数据 对于 CDU 以及修改数据为主的操作型API的响应,都必须返回一个统一的数据格式 Result,该结构定义如下: { success: boolean, statusCode: int,...message:总是返回一个可用于客户端显示的字符串。该属性用于显示给软件使用者查看。 data是可选属性。即如果没有额外的数据,可以没有data属性,也可以data 返回 null。 2.2.4....对于 HTTP 状态码而言,所有API暂时只使用以下状态码: · 200:操作成功返回。 · 201:表示创建成功,POST 添加数据成功后必须返回此状态码。 · 400:请求格式不对。...异常处理 请求失败返回 4XX 后,响应的主体依然是 Result 数据格式。其中 message 表示错误的信息。方便进行调试。...其它 时间的格式:API返回 值中的时间,都统一采用UTC格式 时间。 API的返回值中,如果需要包含调试相关信息(如调用时间、调用次数等),由BAAS平台框架统一处理,不单独在各API中处理。
在下面的响应中,我们可以看到在时间戳 1608481001 处记录的单个值。...如果没有称为 “range” 的指定持续时间,则这些值不能存在,该持续时间用于构建每个时间戳的值列表。 在下面的示例中,请注意带有时间戳的值列表,从 1608481001 到过去最多 30s。...为了绘制指标(metric)图表,对于在时间序列中显示单个时间戳的多个数据点是没有被定义的。 Instant vectors 可以进行比较和运算; Range vectors 不能。..., "881"] } 但从响应中可以看到,这样做会得到我们不感兴趣的请求的总数,我们关注的是它在过去的有限时间内收到的请求的数量(上面表示的是过去所有时间的请求总量),例如,最近十五分钟。...increase 实际上也可以进行外推,因为所请求的持续时间可能没有在范围(range)的“开始”和“结束”处精确对齐的数据点。
3.2.47" , "typescript": "^5.0.2", "vite": "^4.3.9", "nodejs": 18.16.0 先说说实现的核心思路: 1、监听城市名 2、接口请求 3、接口数据返回...就是三方的天气API接口,比如国家气象数据中心,实名注册后每天有20次调用次数,足够使用了,也可以使用第三方平台给的接口,可以自己搜索。...如果没有指定 method,请求将默认使用 GET 方法。...响应结构(比较少,代码如下): { // `data` 由服务器提供的响应 data: {}, // `status` 来自服务器响应的 HTTP 状态码 status: 200,...// 在node.js中它是最后一个ClientRequest实例 (in redirects), // 在浏览器中则是 XMLHttpRequest 实例 request: {} } 注意
调用function A,返回一个Promise对象,这样异步操作就启动了。 调用Promise对象的then方法,参数是resolve和reject的真正响应函数。...当异步操作完成了,就会执行相应分支的响应函数。 采用以上范式,可以通过Promise来进行Ajax操作,也就是XMLHttpRequest,毕竟这个操作在Web应用中实在太常见了。 2....) { //完成许诺,返回响应文本 resolve(req.response); } else {...不能完全这么肯定,但是可以确定的是事件并不总是异步编程的最优实践。...例如这里的XMLHttpRequest操作,事件响应函数onload中的所有行为,并不都是异步请求成功时需要完成的,只有检测访问请求状态为200时候,才需要进行请求成功时的回调函数。
jsonify()函数返回一个默认状态码为200的瓶Response对象,因此在创建响应之后,我将状态码设置为对应的错误代码。 API将返回的最常见错误将是代码400,代表了“错误的请求”。...如果在请求中没有找到JSON数据,该方法返回None,那么我可以使用表达式request.get_json() or {}确保我总是可以获得一个字典。...该请求的响应转换更新后的用户表示返回给用户,并使用最小的200状态代码。...API中没有HTML或登录页面的概念,如果客户端发送带有无效或所有权凭证的请求,服务器必须拒绝请求并返回401状态码。...使用撤销了User类中的辅助方法,该方法重新设置令牌过期日期来实现还原操作。之后提交数据库会话,以确保将更改写入数据库。这个请求的响应没有正文,所以我可以返回一个空字符串。
领取专属 10元无门槛券
手把手带您无忧上云