许久没有写博客了,有些惶恐地打开这个再熟悉不过的编辑器。...场景:要对一个涉及到敏感数据(账号、密码)的接口进行加密后返回 由于之前没有相关的经验,所以先在网上搜罗了一阵,这篇博客不错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会保存下来压缩过的文件,因此使用数据的程序需要自行解压数据。
POST — 创建资源,向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。...保持向后兼容性总是一个很好的做法,这样如果你改变 API 版本,消费者就有足够的时间进入下一个版本。...使用分页 当您公开可能返回大量数据的 API 时,必须使用分页,如果没有进行适当的负载平衡,消费者可能最终会关闭服务。我们需要始终记住,API 设计应该是完整的证明和傻瓜证明。...支持的格式 选择 API 的响应方式也很重要。大多数现代应用程序都应该返回 JSON 响应,除非你有一个仍然需要获得 XML 响应的遗留应用程序。...使用正确的错误信息 保持应用程序发送的一组错误消息并以正确的 id 对其做出响应总是一个很好的做法。
中我对比了 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 响应的简单值
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 头: 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的区别。
MockServer就能扮演这个后端角色,返回你期望的数据格式。这东西的核心思想很简单:既然真实接口暂时没有,那我就造一个假的!但这个"假的"可不是随便糊弄,而是完全按照接口文档规范来设计的。...想测试超长数据?MockServer可以返回巨长的字符串。想测试网络延迟?MockServer可以设置响应时间。独立开发环境有时候开发环境不稳定,测试环境又被别人占用。...比如说,同一个接口可以根据不同的参数返回不同的数据。用户ID为1时返回管理员信息,用户ID为2时返回普通用户信息。这种灵活性在实际开发中超级有用!...动态响应生成MockServer不只是返回固定的静态数据,它还支持动态生成响应内容。可以使用JavaScript模板、Velocity模板等方式来生成响应数据。想要随机生成用户名?没问题!...你可以根据请求体中的特定字段来决定返回什么数据:json{ "httpRequest": { "method": "POST", "path": "/api/login", "body
API 使用的响应。...例如,你可以使用 Cache API 存储返回再之后使用,可能从 Service Worker 返回一个图像、脚本或 CSS 文件。...凭证控制 XMLHttpRequest 总是发送浏览器 cookie,Fetch API 不会发送 cookie,除非你显式地在第二个参数 init 对象中设置 credentials 属性。...数据流 XMLHttpRequest 将整个响应读入内存缓冲区,但是 fetch() 可以流式传输请求和响应数据,这是一项新技术,流允许你在发送或接收时处理更小的数据块。...,只有当网络没有响应或请求被中断时,才会发生拒绝。
什么是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: '接口地址
需要特别注意的是,由于Python的GIL导致多线程总是单核执行的”特点”,tornado处理http请求时,若某个请求的后端响应有阻塞现象(如从DB或磁盘读数据导致处理时间很长),则会导致其他http...,没有多大的实战意义。...city=xxx 根据上面的场景,由于我们用tornado实现的web server接到client的请求后,还要去另一个API接口请求基础数据,而后者在返回前,tornado会block,所以,这种场景下...,tornado最好以异步方式请求那个提供基础数据的API,避免不可控的后端拖累tornado的响应性能。...,进程控制权会返给主线程, 故即使该函数需要较长运行时间,tornado的主线程也可以继续处理其它请求 在Python 2.x版本的语法中,generator中不允许用return返回函数的返回值, 必须用
在下面的响应中,我们可以看到在时间戳 1608481001 处记录的单个值。...如果没有称为 “range” 的指定持续时间,则这些值不能存在,该持续时间用于构建每个时间戳的值列表。 在下面的示例中,请注意带有时间戳的值列表,从 1608481001 到过去最多 30s。...为了绘制指标(metric)图表,对于在时间序列中显示单个时间戳的多个数据点是没有被定义的。 Instant vectors 可以进行比较和运算; Range vectors 不能。..., "881"] } 但从响应中可以看到,这样做会得到我们不感兴趣的请求的总数,我们关注的是它在过去的有限时间内收到的请求的数量(上面表示的是过去所有时间的请求总量),例如,最近十五分钟。...increase 实际上也可以进行外推,因为所请求的持续时间可能没有在范围(range)的“开始”和“结束”处精确对齐的数据点。
通用输出数据 对于 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中处理。
调用function A,返回一个Promise对象,这样异步操作就启动了。 调用Promise对象的then方法,参数是resolve和reject的真正响应函数。...当异步操作完成了,就会执行相应分支的响应函数。 采用以上范式,可以通过Promise来进行Ajax操作,也就是XMLHttpRequest,毕竟这个操作在Web应用中实在太常见了。 2....) { //完成许诺,返回响应文本 resolve(req.response); } else {...不能完全这么肯定,但是可以确定的是事件并不总是异步编程的最优实践。...例如这里的XMLHttpRequest操作,事件响应函数onload中的所有行为,并不都是异步请求成功时需要完成的,只有检测访问请求状态为200时候,才需要进行请求成功时的回调函数。
v参数用来区别 treeType 为 default 时返回树的格式, customized总是返回格式2.0的构件树。 参数: ?...v参数用来区别 treeType 为 default 时返回树的格式, customized总是返回格式2.0的构件树。...HTTP响应示例(200): { "code": "success", "message": null, "data": [ { "actualName...14 (2)v 参数用来区别 treeType 为 default 时返回树的格式, customized 总是返回格式2.0的构件树。...14 (2)v 参数用来区别 treeType 为 default 时返回树的格式, customized 总是返回格式2.0的构件树。