Blame view

node_modules/parseurl/README.md 3.55 KB
aaac7fed   liuqimichale   add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
  # parseurl
  
  [![NPM Version][npm-image]][npm-url]
  [![NPM Downloads][downloads-image]][downloads-url]
  [![Node.js Version][node-version-image]][node-version-url]
  [![Build Status][travis-image]][travis-url]
  [![Test Coverage][coveralls-image]][coveralls-url]
  
  Parse a URL with memoization.
  
  ## Install
  
  This is a [Node.js](https://nodejs.org/en/) module available through the
  [npm registry](https://www.npmjs.com/). Installation is done using the
  [`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
  
  ```sh
  $ npm install parseurl
  ```
  
  ## API
  
  ```js
  var parseurl = require('parseurl')
  ```
  
  ### parseurl(req)
  
  Parse the URL of the given request object (looks at the `req.url` property)
  and return the result. The result is the same as `url.parse` in Node.js core.
  Calling this function multiple times on the same `req` where `req.url` does
  not change will return a cached parsed object, rather than parsing again.
  
  ### parseurl.original(req)
  
  Parse the original URL of the given request object and return the result.
  This works by trying to parse `req.originalUrl` if it is a string, otherwise
  parses `req.url`. The result is the same as `url.parse` in Node.js core.
  Calling this function multiple times on the same `req` where `req.originalUrl`
  does not change will return a cached parsed object, rather than parsing again.
  
  ## Benchmark
  
  ```bash
  $ npm run-script bench
  
  > parseurl@1.3.2 bench nodejs-parseurl
  > node benchmark/index.js
  
    http_parser@2.7.0
    node@4.8.4
    v8@4.5.103.47
    uv@1.9.1
    zlib@1.2.11
    ares@1.10.1-DEV
    icu@56.1
    modules@46
    openssl@1.0.2k
  
  > node benchmark/fullurl.js
  
    Parsing URL "http://localhost:8888/foo/bar?user=tj&pet=fluffy"
  
    3 tests completed.
  
    fasturl   x 1,246,766 ops/sec ±0.74% (188 runs sampled)
    nativeurl x    91,536 ops/sec ±0.54% (189 runs sampled)
    parseurl  x    90,645 ops/sec ±0.38% (189 runs sampled)
  
  > node benchmark/pathquery.js
  
    Parsing URL "/foo/bar?user=tj&pet=fluffy"
  
    3 tests completed.
  
    fasturl   x 2,077,650 ops/sec ±0.69% (186 runs sampled)
    nativeurl x   638,669 ops/sec ±0.67% (189 runs sampled)
    parseurl  x 2,431,842 ops/sec ±0.71% (189 runs sampled)
  
  > node benchmark/samerequest.js
  
    Parsing URL "/foo/bar?user=tj&pet=fluffy" on same request object
  
    3 tests completed.
  
    fasturl   x  2,135,391 ops/sec ±0.69% (188 runs sampled)
    nativeurl x    672,809 ops/sec ±3.83% (186 runs sampled)
    parseurl  x 11,604,947 ops/sec ±0.70% (189 runs sampled)
  
  > node benchmark/simplepath.js
  
    Parsing URL "/foo/bar"
  
    3 tests completed.
  
    fasturl   x 4,961,391 ops/sec ±0.97% (186 runs sampled)
    nativeurl x   914,931 ops/sec ±0.83% (186 runs sampled)
    parseurl  x 7,559,196 ops/sec ±0.66% (188 runs sampled)
  
  > node benchmark/slash.js
  
    Parsing URL "/"
  
    3 tests completed.
  
    fasturl   x  4,053,379 ops/sec ±0.91% (187 runs sampled)
    nativeurl x    963,999 ops/sec ±0.58% (189 runs sampled)
    parseurl  x 11,516,143 ops/sec ±0.58% (188 runs sampled)
  ```
  
  ## License
  
    [MIT](LICENSE)
  
  [npm-image]: https://img.shields.io/npm/v/parseurl.svg
  [npm-url]: https://npmjs.org/package/parseurl
  [node-version-image]: https://img.shields.io/node/v/parseurl.svg
  [node-version-url]: https://nodejs.org/en/download/
  [travis-image]: https://img.shields.io/travis/pillarjs/parseurl/master.svg
  [travis-url]: https://travis-ci.org/pillarjs/parseurl
  [coveralls-image]: https://img.shields.io/coveralls/pillarjs/parseurl/master.svg
  [coveralls-url]: https://coveralls.io/r/pillarjs/parseurl?branch=master
  [downloads-image]: https://img.shields.io/npm/dm/parseurl.svg
  [downloads-url]: https://npmjs.org/package/parseurl