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

架构必备「RESTful API」设计技巧经验总结

然而,在研究了其他的API实现之后发现,喜欢上了这种较短的URL样式,它把api作为是域名的一部分,并从路由中删除了/api,这样更短、更简洁。 ?...最初,坚持认为封包数据是不必要的,HTTP协议已经提供了足够的“封包”来传递响应消息。 然而,根据Reddit上的回复所述,如果不封包为JSON数组,则可能会出现各种漏洞和潜在的黑客攻击。...因此,喜欢返回“OK”,尽管这是一个字符串,但是在返回的时候会被包装成一个简单的响应对象。 ? 使用HTTP状态码和错误响应 因为我们使用了HTTP方法,所以我们应当使用HTTP状态码。...要区分代码和描述,打算将error(代码)作为机器可识别的常量,将description作为可更改的用于人类识别的字符串。点击这里有一篇http1.0和2.0的对比。...如果验证通过,则JWT的有效载荷中包含了一个uid,它用于在API响应的上下文中传递一个对应的user对象来检查权限/角色,并相应地创建/读取/更新/删除数据。

2K30

通过示例学 Golang 2020 中文版【翻译完成】

Golang 关于 Golang GO 的安装 设置工作区和你好世界程序 变量 变量 理解var关键字 变量的作用域 变量和常量的命名约定 理解:=符号或短变量声明 你好世界 常量 常量 常量在声明后可以重新赋值...使用另一个字符串替换字符串的所有实例 使用另一个串替换串的一些实例 将字符串中的一个字符替换为另一个字符 查找字符串最后一个实例的索引 Index character in a string...客户端 理解Set-Cookie响应头 CookieJar Cookie 读取 HTTP Cookie 设置 HTTP Cookie 返回 400(错误请求)状态代码 返回 404(找不到资源)状态代码...在 HTTP 响应中返回 401(未授权)状态代码 在 HTTP 响应中返回 403(禁止)状态代码 在 HTTP 响应中返回 200(OK)状态代码 返回 201(已创建)状态代码 返回 500(内部服务器错误...)状态代码 如何设置 HTTP 响应的状态码 在 HTTP 响应中返回 JSON 正文 返回 202(已接受) 在 HTTP 响应中返回纯文本正文 在 HTTP 响应中返回图像或文件 解析网址并提取所有部分

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

Node·七天学会 NodeJS

大文件拷贝 对于大文件拷贝,如果一次性把所有文件内容都读取到内存中后再一次性写入磁盘的方式可能会造成内存爆仓。所以对于大文件,只能读一点写一点,直到完成拷贝。...Buffer 与字符串类似,除了可以用 .length 属性得到字节长度外,还可以用 [index] 方式读取指定位置的字节。...但是,BOM 字符虽然起到了标记文件编码的作用,其本身却不属于文件内容的一部分,如果读取文本文件时不去掉 BOM,在某些使用场景下就会有问题。...然后,服务器会读取请求的文件,并按顺序合并文件内容。最后,服务器返回响应,完成对一次请求的处理。 另外,服务器在读取文件时的根目录和服务器监听的 HTTP 端口可以配置。...**因此,正确的做法不是改用并行 IO,而是一边读取文件一边输出响应,把响应输出时机提前至读取第一个文件的时刻。

2.1K20

浏览器缓存机制浅析

原文出处: 韩迟 浏览器缓存机制,其实主要就是HTTP协议定义的缓存机制(如: Expires; Cache-control等)。...这时服务端就会和客户端约定一个有效期,譬如说服务端告诉客 户端1天内服务端的文件不会更新,你就放心地读取缓存吧,于是在这一天里每次遇到相同的请求客户端都开心地可以读取缓存里的文件。...,当客户端发现和服务器约定的直接读取缓存的时间过了,就在请求中发送If- None-Match选项,值即为上次请求后响应头的ETag值,该值在服务端和服务端代表该文件唯一的字符串对比(如果服务端该文件改变了...看如上截图,与服务器约定的直接读取本地缓存的时间过了,就会向服务器发送新的请求,请求头中带If-None-Match项,该字符串值会在服务 端进行匹配,很显然,并没有什么变化(看响应头的ETag值),于是响应...the life, 有个jquery的请求,如果直接在地址栏按回车,响应HTTP200(from cache),因为有效期还没过直接读取的缓存;如果ctrl+r进行刷新,则会相应HTTP304(Not

84240

CSS 属性选择器的深入挖掘

[attr*=val] : 选择attr属性的值中包含字符串 val 的元素(一个字符串就是一个字符串的一部分而已,例如,”cat“ 是 字符串 ”caterpillar“ 的字符串 CSS 属性选择器的最基本用法...img[title][class~=logo]{ ... } 伪正则写法 i 参数 忽略类名的大小写限制,选择包含 class 类名包含字符串为 text,Text,TeXt......角标功能 这里有一个小知识点,伪元素的 content 属性,通过 attr(xxx),可以读取到对应 DOM 元素标签名为 xxx 的属性的值。...那么,CSS 需要语义化?CSS 有语义化?例如上述的例子,使用特定的类名或者 id 选择器皆可完成。那么使用属性选择器的理由是什么?...的理解是,属性(attribute)本身已经具有一定的语义,表达了元素的某些特征或者功能,利用属性选取元素再进行对该属性值的特定操作,一定程度上也可以辅助提升代码的语义化。

96030

前端vue面试题2021_vue框架面试题

叫XXX,来自XXX,很荣幸能来我们公司面试,从事前端开发有3年了,目前掌握的技术有html,css,js,ajax,vue,小程序,参与过各种类型的项目。...做过的项目有 A,B,C,D,E 那么最近做的一个项目是XXX 在这个项目中主要负责的板块是XXX 面试官 您这边还有什么想要了解的么。...(重要) 捕获: 从document开始,层层元素传递,直到点击到当前元素 冒泡: 从点击当前元素开始,层层父级传递,直到document 事件委托: 将元素的事件交给父元素处理(主要是添加新的节点...页面首次渲染 浏览器窗口大小发生改变 元素尺寸或位置发生改变 元素内容变化(文字数量或 图片大小等等) 元素字体大小变化 添加或者删除可见的DOM元素 激活CSS伪类(例 如::hover) 查询某些属性或调用某些方法...或者具名和匿名插槽的方式用法,具名可以指定位置 33.vue的单项数据流? 答:数据从父级组件传递给组件,组件内部不能直接修改从父级传递过来的数据。

1.8K40

Gitlab CICD 实践四:Golang 项目 CICD 流水线配置

去遍历了一个 map a,然后可以在这个 for range 当中拿到这个 map 的 key 和value,是吧?...,它可以正确的输出这个 map 当中的每一个对应的元素和它对应的值?...goroutine 泄露的场景 未管理协程的生命周期 有过 go 的 gc 的调优经验?...1、string(字符串);2、hash(哈希);3、list(列表);4、set(集合);5、sort set (有序集合) 如何向一个哈希 key 当中去批量的添加一些它的 key?...pagecache 淘汰机制 算法题 n 乘 n 的二维矩阵旋转 90 度输出 判断链表有环 一个数组,求最长递增子序列,不是串,不要求连续 两个字符串,求最长公共序列 逻辑题 老师的生日,月份告诉小明

11210

西门子 S7 通信协议概述2

在配置 CPU 期间,可以设置三种保护模式。 无保护:正如人们期望不需要身份验证一样。 写保护:对于某些数据写入和配置更改操作,需要进行身份验证。...读/写保护:就像上一个一样,但某些读取操作也需要身份验证。 必须注意的是,即使启用了读/写保护,也允许某些操作,例如读取 SZL 列表或读取和写入标记区域。...这些项包含读取变量的实际值,格式取决于寻址模式。 写入请求:包含与读取响应类似的数据项,参数标头中的每个请求项一个。同样,它们包含要在从设备上写入的变量值。...变量类型:[1b] 始终设置为 0x09(八进制字符串)。 长度:[2b] 剩余响应数据的长度。 响应: 错误代码:[1b] 与子项请求关联的返回值。...这两个字段都是编码为 ASCII 字符串的十进制数字。响应 Ack 数据 - 请求下载仅包含函数代码。

1K60

UIUC CS241 讲义:众包系统编程书

进程控制,第一部分:等待宏,使用信号 等待宏 可以找出进程的退出值?...继续进程 继续运行进程 SIGKILL 终止进程(无法被忽略) 你想让你的进程消失 可以暂停进程?...和两个新行(\r\n\r\n) 服务器的第一行响应描述了所使用的 HTTP 版本以及请求是否成功,使用了一个 3 位数的响应代码: HTTP/1.1 200 OK 如果客户端请求了一个不存在的文件,例如...GET /nosuchfile.html HTTP/1.0,那么第一行包括响应代码是著名的404响应代码: HTTP/1.1 404 Not Found 网络,第四部分:构建一个简单的 TCP 服务器...十、信号 进程控制,第一部分:使用信号的等待宏 等待宏 能找出进程的退出值

61910

一文为你讲解清楚并发,同步,异步,互斥,阻塞,非阻塞

可以在主线程创建一个新线程来做某件事,此时主线程不需等待线程做完而是可以做其他事情。2)异步和多线程并不是一个同等关系。异步是最终目的,多线程只是我们实现异步的一种手段。...同步阻塞:发送方发出请求后一直等待(同步),接收方开始读取文件,如果不能马上得到读取结果就一直等,直到获取读取结果再响应发送发,等待期间不可做其他操作(阻塞)。...直到IO操作(这里是读取文件)完成后,接收方获得读取结果响应发送方,接收方才可以进入下一次请求过程。...可以理解成“你说完,再做”。有了线程同步,每个线程才不是自己做自己的事情,而是协同完成某件大事。...同步一定阻塞?阻塞一定同步? 同步是个过程,阻塞是线程的一种状态:当多个线程访问同一资源时,规定同一时间只有一个线程可以进行访问,所以后访问的线程将阻塞,等待前访问的线程访问完。

7.3K21

php文件下载限速,文件断点续传,多线程下载文件原理解析

可以通过限制输出频率?例如每次读取1024之后,就进行一次sleep? <?php /**  * Created by PhpStorm....头,而当断点续传时,由于再之前已经获得了n字节数据,所以可以直接请求 Range: bytes=n字节-总文件大小,代表着n字节之前的数据不再下载 响应头也是如此,那么,我们通过之前的限速下载,进行暂停...empty($_SERVER['HTTP_RANGE'])){     //切割字符串     $range = explode('-',substr($_SERVER['HTTP_RANGE'],6)...,即实现了多线程下载 以上代码是访问nginx直接测试的,之前的代码不支持head  http头,我们需要修改一下才可以支持(但这是标准http写法) 我们需要修改下之前的代码,使其支持range的结束位置...empty($_SERVER['HTTP_RANGE'])) {     //切割字符串     $range = explode('-', substr($_SERVER['HTTP_RANGE'],

2.6K10

百度C++研发工程师面经

SessionID是一个由24个字符组成的随机字符串。用户每次提交页面,浏览器都会把这个SessionID包含在 HTTP头中提交给Web服务器,这样Web服务器就能区分当前请求页面的是哪一个客户端。...当然,我们可以在登陆时点击下次自动登录,比如说CSDN的“记住一周”,或者我们的购物车信息可以在切换不同浏览器时依然可用。...能举一些常见的使用场景?有哪些使用他们的应用层协议? https和http的区别是什么? redis的缓存击穿是怎么出现的?...用哈希对流量分组,每台机器承接一定的流量,再搞点负载均衡的策略 的本地机器只有2.5G,但我想申请4G的内存空间,可以做到?...每个使用者都可以读取写入数据,但是所有程序之间必须达成并遵守一定的协议,以防止诸如在读取信息之前覆写内存空间等竞争状态的出现。

75920

前端vue面试题,附答案

) 5.装饰模式: (@装饰器的用法) 6.策略模式 策略模式指对象有某个行为,但是在不同的场景中,该行为有不同的实现方案-比如选项的合并策略 Vue模版编译原理知道,能简单说一下?...、节点、文本等等) 了解nextTick?...v-if 是真正的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和组件适当地被销毁和重建;也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。...Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。...,或者在某些节点有绑定数据(表单)状态,会出现状态错位。)

79031

Python3学习(34)--简单网页内

在Python中,有一个模块,叫urllib,专门就是为了读取web页面中的数据,还记得Python的鸭子类型,“file-like object”,走起路子只要像鸭子,那么它就可以被当做鸭子。...getcode(): 返回响应HTTP状态代码 100-199 用于指定客户端应相应的某些动作。 200-299 用于表示请求成功。...函数的参数,以获得请求后的http上下文对象,也就是http response对象,这个对象,还是很有料的,正是我们所需要的,当然,参数也可以直接是一个url字符串。...getcode(): 返回响应HTTP状态代码 100-199 用于指定客户端应相应的某些动作。 200-299 用于表示请求成功。...getcode(): 返回响应HTTP状态代码 100-199 用于指定客户端应相应的某些动作。 200-299 用于表示请求成功。

55310

PHP面试-复习知识点整理

大家好,又见面了,是全栈君。...,从而高效使用资源 可以使用分区表来避免某些特殊瓶颈 可以备份和恢复独立分区 限制 一个表最多只能有1024个分区 5.1版本中,分区表表达式必须是整数,5.5可以使用列分区...如果一个表中某些列常用,而另外一些列不常用 2. 可以使数据行变小,一个数据页能存储更多数据,查询时减少I/O次数 缺点: 1. 管理冗余列,查询所有数据需要JOIN操作 2....收到数据后服务器程序进行处理然后使用send向客户端发送响应 当客户端连接关闭时,进程/线程退出并销毁所有资源。...多线程模式 多线程模型下可以创建线程 进程/线程创建成功后进入while循环,阻塞在recv调用上,等待客户端向服务器发送数据 收到数据后服务器程序进行处理然后使用send向客户端发送响应

1.1K20

从零构建一个简单的 Python 框架

在开始写代码前,先列举一下所需的功能以及限制。 功能: 处理 HTTP 的 GET 和 POST 请求。你可以在这篇 wiki 中对 HTTP 有个大致的了解。...所有内容被包含在 try-except 代码块中,这样在解析请求或响应期间抛出的异常可以被捕获到,然后一个错误响应会发送回客户端。...在 while 循环中不断读取请求,直到解析器将 self.request.finished 设置为 True ,或者客户端关闭连接所触发的信号使得 self....还记得上一段提到的那个错误?只有从 StreamReader 读取数据时,self._reset_conn_timeout() 函数才会被调用。...这个方法将处理一条 TCP 连接的所有逻辑:读取、解析、生成响应并发送回客户端、以及关闭连接。它的重点是 IO 逻辑、解析和生成响应。 讲解了核心的 IO 部分,让我们继续。

1.1K60

七天学会NodeJS——第一天

,除了可以用.length属性得到字节长度外,还可以用[index]方式读取指定位置的字节,例如: bin[0]; // => 0x68; Buffer与字符串能够互相转化,例如可以使用指定编码将二进制数据转化为字符串...字符串是只读的,并且对字符串的任何修改得到的都是一个新字符串,原字符串保持不变。至于Buffer,更像是可以做指针操作的C语言数组。例如,可以用[index]方式直接修改某个位置的字节。...在读取不同编码的文本文件时,需要将文件内容转换为JS使用的UTF8编码字符串后才能正常处理。...但是,BOM字符虽然起到了标记文件编码的作用,其本身却不属于文件内容的一部分,如果读取文本文件时不去掉BOM,在某些使用场景下就会有问题。...因此,正确的做法不是改用并行IO,而是一边读取文件一边输出响应,把响应输出时机提前至读取第一个文件的时刻。这样调整后,整个请求处理过程变成下边这样。

6.9K20
领券