Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

koa源码分析(三) - request.js #7

Open
brunoyang opened this issue Oct 10, 2015 · 0 comments
Open

koa源码分析(三) - request.js #7

brunoyang opened this issue Oct 10, 2015 · 0 comments

Comments

@brunoyang
Copy link
Owner

本文分为四个部分,分别对应源码的四个文件。

依赖

  • content-type:获取http请求头的content-type并装换成小写
  • stringify:url模块的format方法,用于将一个对象整合成url
  • parserutl: 顾名思义,解析url
  • type-is: 判断req的content-type
  • fresh: 模仿服务器304的判断过程,既对比请求中的if-modified-since和etag与相应中的last-modified来判断是否需要带上响应体(body)

源码分析

request里的方法都是对request头里的参数进行一个简单的封装或仅仅仅仅是一个缩写,大多数很简单,我只挑我喜欢的讲,没有为什么,任性~

idempotent

idempotent的中文是幂等,什么意思呢,就是你进行了一项操作,比如拉取资源,上传文件,提交订单等,若是做了100次跟做1次的结果是一样的,那这项操作就是幂等的。比如我拉取一个资源,拉取100次跟拉1次没什么区别。但用post提交数据就不是一个幂等操作,若不做幂等校验,每一次的post都将会落入数据库(比如是一个落库操作),所以都会对提交上来的数据进行幂等校验。

说完什么是幂等,再来看idempotent,就两句,第一句里的数组元素都是幂等操作,第二句是看this.method是否是一个幂等操作,操作符是NOT操作符,属于对二进制数据的操作,前端用的很少。有一个简单的公式可以计算之后的结果,a => -a - 1,所以当indexOf的结果是-1时,-1就等于0,两次取反就得到false。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant