首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

REST API有关幂等性等11条最佳实践

返回 JSON,如果客户端想要协商其他内容,请依赖标准 HTTP 标头。 规则 #4:不要将数组作为顶级响应返回 来自端点的顶级响应应该始终是一个对象,而不是一个数组。...问题在于,当您返回数组时,很难进行向后兼容的更改。对象允许您进行附加更改。 在这个特定示例中,明显的共同演变是添加分页。您可以随时添加totalCount或hasMore字段,老客户端将继续工作。...如果您的端点返回顶级数组,您将需要一个全新的端点。 规则 #5:不要返回映射结构 我经常看到 JSON 响应中用于集合的映射结构。相反,返回一个对象数组。...当冲突发生时... 既然您的 API 提供了一种(良好的)幂等机制,那么还有一个主要考虑因素:如何通知客户端存在冲突?...有两个主要的思想流派: 1、返回错误 当客户端提交重复的幂等性密钥时,我喜欢返回 409 CONFLICT。

26720

掌握JavaScript的JSON.stringify鲜为人知的技巧,让前端开发更加高效和灵活

数组元素中的特殊值 当 undefined、函数和 Symbol 作为数组元素时,JSON.stringify 会将它们序列化为 null。...(array)); // "["文字",null,null,null,"更多文字"]" 解释:在这个例子中,数组中的 undefined、函数和 Symbol 被转换成 null,但数组中元素的顺序保持不变...自定义序列化结果 当一个对象包含 toJSON() 方法时,JSON.stringify 会调用这个方法,并使用其返回值作为最终的序列化结果。...对象和数组中的特殊数值 当 NaN、Infinity 和 null 作为对象属性值或数组元素时,它们会被转换为 null。...使用 replacer 参数作为数组 当 replacer 参数是一个数组时,数组中的值表示要被序列化到 JSON 字符串中的属性名。

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

    Go面经

    29.Go中map如何顺序读取 30.变量地址 31.goto 32.type alias 33.读取大文件 1.time.Now()返回的是什么时间?...触发 Goroutine 的调度让出处理器的使用权;从 Channel 接收数据时,会触发 Goroutine 调度的两个时机: 当 Channel 为空时; 当缓冲区中不存在数据并且也不存在数据的发送者时..._defer 结构体并执行; 如果调用延迟执行函数时遇到了 runtime.gorecover 就会将 _panic.recovered 标记成 true 并返回 panic 的参数;在这次调用结束之后...hash("author") % array.len 拉链法 装载因子:=元素数量/桶数量 实现拉链法一般会使用数组加上链表,不过一些编程语言会在拉链法的哈希中引入红黑树以优化性能,拉链法会使用链表数组作为哈希底层的数据结构...(因为客户端一直和服务端保持联系) ○ 缺点 当客户端越来越多的时候,会将服务器压垮。■ 连接管理难。■ 安全性差。

    37120

    数据结构 API

    包括(数量); 在此程序中,storeNumber()向数组添加一个数字,如果该数字存在于数组中则doYouHaveThisNumber()返回,否则返回。...在这两种情况下,代码的公共 API,即我们希望最终用户与之交互的代码部分,保持不变:我们有两个函数,storeNumber()并且doYouHaveThisNumber()....作为一名 JavaScript 程序员,您实际上不需要知道如何将元素添加到数组末尾的实际策略或底层实现.push()来使用它。...如果有人在程序中使用我们的Stack类,我们可以完全改变底层实现,只要最终用户 API 保持不变,他们的程序就应该继续运行。...当您构建自己的类和数据结构时,请务必牢记实现(它在内部需要什么来完成它的工作)和外部 API(它的用户实际上应该如何与之交互?)之间的区别。

    15720

    react hooks 全攻略

    值得注意的是,useRef 返回的引用对象在组件的整个生命周期中保持不变,即使重新渲染时也不会变化。 存储组件内部的值:可以使用 useRef 来存储某些组件内的值,类似于类组件中的实例变量。...它们的滥用可能会导致性能问题和代码可读性 # useMemo 当函数组件中状态变化时,会重新自上而下渲染当前组件、以及子组件。如何隔离状态,避免不必要的渲染 ?...useMemo 接受两个参数:一个计算函数和一个依赖数组。计算函数会在组件渲染时执行,并返回一个计算结果。这个计算结果会被缓存起来,直到依赖项发生变化。...useCallBack 的本质工作不是在依赖不变的情况下阻止函数创建,而是在依赖不变的情况下不返回新的函数地址而返回旧的函数地址。...# useEffect 可能出现死循环: 当 useEffect 的依赖项数组不为空时,如果依赖项的值在每次重新渲染时都发生变化,useEffect 的回调函数会在每次重新渲染后触发。

    44940

    前端怎么通过二进制流下载文件

    后端返回二进制流,前端进行下载时,一般需要转成blob(Binary large Object),然后再进行下载。...它是以下两个值中的一个: "native",代表行结束符会被更改为适合宿主操作系统文件系统的换行符,或者 "transparent",代表会保持 blob中保存的结束符不变。...返回的数组是Array实例,但包含两个额外的属性: index 和 inputindex 表示匹配项在字符串中的位置;index 表示匹配项在字符串中的位置。...补充:前端axios设置了responseType:blob时,接收到数据就是blob,但是当文件导出失败时,返回的类型是json(为什么是json,后端异常处理一般都是response.setContentType...(reader.result)不报错,则返回的是json,否则返回的是二进制流,进入catch,下载文件 if(JSON.parse(reader.result)){ const {msg

    44110

    分享63个最常见的前端面试题及其答案

    05、什么是闭包,以及如何/为什么使用闭包? 闭包是在函数返回后保持对函数中变量的访问的一种方式。闭包通常用于数据隐私、封装和创建具有持久状态的函数。...当您想要对每个元素执行操作而不返回新数组时,您可以选择 Array.forEach() ;当您需要将数组转换为新数组时,您可以选择 Array.map() 。 07、call和apply有什么区别?...当您想要将数组作为单独的参数传递给函数或基于现有数组创建新数组时,它会很方便。...经典继承通常用在像 Java 或 C# 这样的语言中,这些语言需要严格的类层次结构,并且对象之间的关系是固定的和层次化的。当设计具有明确定义的类结构和继承关系的复杂系统时,它可能是合适的。...当灵活性和对象组合比严格的类层次结构更重要时,原型继承适用。它允许对象直接从其他对象继承,从而促进代码重用、选择性继承和动态对象创建。

    8.4K21

    从 UNMET PEER DEPENDENCY 中理解依赖版本管理

    匹配主要版本和次要版本(>=16.3.0 <16.4.0) ^和~则比较特别,它们分别可以做到上面第三条规则和第四条规则的效果(最高版本为最新版本),同时又兼容了主版本号/次版本号为0的情况: ~: 当安装依赖时获取到有新版本时...即保持主版本号、次版本号不变的情况下,保持修订号的最新版本。 ^: 当安装依赖时获取到有新版本时,安装到 x.y.z 中 y 和 z 都为最新版本。 ...即保持主版本号不变的情况下,保持次版本号、修订版本号为最新版本。...npm install时会将dependencies中位置靠前的包中的依赖,提升到上一级,这是为了解决 npm 3.x 版本之前嵌套结构造成的模块冗余问题,当父级目录的lodash能够满足C包、D包等依赖的...但在过程中其实对package.json,扁平结构和lock等设计都有了崭新的认识。

    5.1K20

    分享 63 道最常见的前端面试及其答案

    05、什么是闭包,以及如何/为什么使用闭包? 闭包是在函数返回后保持对函数中变量的访问的一种方式。闭包通常用于数据隐私、封装和创建具有持久状态的函数。...当您想要对每个元素执行操作而不返回新数组时,您可以选择 Array.forEach() ;当您需要将数组转换为新数组时,您可以选择 Array.map() 。 07、call和apply有什么区别?...当您想要将数组作为单独的参数传递给函数或基于现有数组创建新数组时,它会很方便。...经典继承通常用在像 Java 或 C# 这样的语言中,这些语言需要严格的类层次结构,并且对象之间的关系是固定的和层次化的。当设计具有明确定义的类结构和继承关系的复杂系统时,它可能是合适的。...当灵活性和对象组合比严格的类层次结构更重要时,原型继承适用。它允许对象直接从其他对象继承,从而促进代码重用、选择性继承和动态对象创建。

    34930

    前端进阶: 如何用javascript存储函数?

    值,在序列化过程中会被忽略(出现在非数组对象的属性值中时)或者被转换成 null(出现在数组中时)。...函数需要返回 JSON 字符串中的 value, 如下所示: 如果返回一个 Number, 转换成相应的字符串作为属性值被添加入 JSON 字符串 如果返回一个 String, 该字符串作为属性值被添加入...JSON 字符串 如果返回一个 Boolean, 则 "true" 或者 "false" 作为属性值被添加入 JSON 字符串 如果返回任何其他对象,该对象递归地序列化成 JSON 字符串,对每个属性调用...接下来我们看看如何反序列化带函数字符串的 json. 因为我们将函数转换为字符串了, 我们在反解析时就需要知道哪些字符串是需要转换成函数的, 如果不对函数做任何处理我们可能需要人肉识别....在原生JSON.parse 的基础上支持反序列化函数,错误回调 funcParse 将js对象中的函数一键序列化, 并保持js对象类型不变 安装方式如下: # or npm install xijs

    1.7K20

    精读《Records & Tuples for React》

    (await response.text()); }; 即利用 Record 提案的 JSON.parseImmutable 将后端返回值也转化为 Record,这样即便重新查询,但如果返回结果完全不变...避免循环产生的新引用 即便原始对象引用不变,但我们写几行代码随便 .filter 一下引用就变了,而且无论返回结果是否变化,引用都一定会改变: const AllUsers = [ { id: 1,...因为在目前阶段,编译时 ts 是完全无法保障变量引用是否会变化。 优化 css-in-js 采用 Record 与普通 object 作为 css 属性,对 css-in-js 的区别是什么?...其中还是提到了一些具体做法,包括快速判断真假,即对数据结构操作时的优化。...当然这个提案面临的最大问题就是 “如何将拥有子结构的类型看作原始类型”,也许 JS 引擎将它看作一种特别的字符串更贴合其原理,但难点是这又违背了整个语言体系对子结构的默认认知,Box 装箱语法尤其别扭。

    39320

    JavaScript 中的 不变性(Immutability)

    在这篇文章中,我将展示什么是完全不变的,如何在JavaScript中使用这个概念,以及为什么它是有用的。 什么是不变性? 可变性的文本定义是可能会被改变的。...options.rows, tiles: initTiles(options.rows, options.cols, options.mines) }); } 核心游戏逻辑的其余部分被实现为将这个不可变结构作为第一个参数的函数...当被调用时,它将tile显露出来。...不变性在这种情况下如何解决?...这要求我们跟踪保持状态的引用,但是整个问题现在已经减少到管理单个引用。 总结 我希望这篇文章给你提供了一些关于不变性如何帮助你改进你的代码的知识,所提供的例子可以说明这个工作的实际效果。

    1K20

    分享 30 道 TypeScript 相关面的面试题

    当创建可能缺少值的结构或处理来自外部源的数据(其中某些字段可能不存在)时,这非常有用。 08、在定义对象形状时,您能区分interface和type吗?...10、readonly 关键字如何改变 TypeScript 变量或属性? 答案:readonly 关键字当作为变量或属性的前缀时,可确保一旦设置其值,此后就无法修改。...使用只读数组可确保数组在创建后无法修改,这对于确保数据不变性特别有用,例如在函数或组件之间传递数据时。 16、TypeScript 中的 never 类型意味着什么?...语法可以是变量或变量作为类型。当您比 TypeScript 的类型推断系统更了解变量的类型时,例如在处理联合类型或任何类型时,它会很有用。...是一个逻辑运算符,当其左侧操作数为空或未定义时返回其右侧操作数,否则返回其左侧操作数。这在您想要回退到默认值的情况下非常有用。 22、什么是映射类型,以及如何在 TypeScript 中使用它们?

    1K30

    2023前端二面react面试题(边面边更)

    用 JavaScript 对象结构表示 DOM 树的结构;然后用这个树构建一个真正的 DOM 树,插到文档当中当状态变更的时候,重新构造一棵新的对象树。...因为 React 需要将组件转化为虚拟 DOM 树,所以在编写代码时,实际上是在手写一棵结构树。而XML 在树结构的描述上天生具有可读性强的优势。...纯函数的输入输出确定性 o useMemo 纯的一个记忆函数 o useRef 返回一个可变的ref对象,其Current 属性被初始化为传递的参数,返回的 ref 对象在组件的整个生命周期内保持不变。...:当 ref 属性被用于一个普通的 HTML 元素时,React.createRef() 将接收底层 DOM 元素作为他的 current 属性以创建 ref。...当 ref 属性被用于一个自定义的类组件时,ref 对象将接收该组件已挂载的实例作为他的 current。当在父组件中需要访问子组件中的 ref 时可使用传递 Refs 或回调 Refs。

    2.4K50
    领券