source: Dev/trunk/node_modules/grunt-http/README.md @ 531

Last change on this file since 531 was 517, checked in by hendrikvanantwerpen, 11 years ago

Deployment and database management now done through Grunt. Look mom, no shell\!

File size: 5.8 KB
RevLine 
[517]1# grunt-http
2
3> Sends a HTTP request and deals with the response.
4
5[![NPM](https://nodei.co/npm/grunt-http.png)](https://nodei.co/npm/grunt-http)
6
7## Getting Started
8This plugin requires Grunt `~0.4.1`
9
10If you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
11
12```shell
13npm install grunt-http --save-dev
14```
15
16Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
17
18```js
19grunt.loadNpmTasks('grunt-http');
20```
21
22## The "http" task
23
24### Overview
25In your project's Gruntfile, add a section named `http` to the data object passed into `grunt.initConfig()`.
26
27```js
28grunt.initConfig({
29  http: {
30    your_service: {
31      options: {
32        url: 'your/url.com',
33      },
34      dest: 'optional/file/to/save/response'
35    }
36  }
37})
38```
39
40If you add a source file, the contents will be added to the `body` option unless another field is specified in the `sourceField` option.
41
42### Options
43
44grunt-http uses the [request](https://github.com/mikeal/request) module under the hood, and apart from a couple specific to grunt-http options, the rest get passed straight to it. Here's a copy of the of the module's option docs. Otherwise, [go to the repo](https://github.com/mikeal/request) and have a look at what's it's capable of.
45
46- `uri || url` - fully qualified uri or a parsed url object from url.parse(). REQUIRED.
47- `qs` - object containing querystring values to be appended to the uri
48- `method` - http method, defaults to GET
49- `headers` - http headers, defaults to {}
50- `body` - entity body for PATCH, POST and PUT requests. Must be buffer or string.
51- `sourceField` - A field in the body or form to add the source files' contents to. Can contain full stops to separate object path. Ie "form.js\_code".
52- `form` - when passed an object this will set body but to a querystring representation of value and adds Content-type: application/x-www-form-urlencoded; charset=utf-8 header. When passed no option a FormData instance is returned that will be piped to request.
53- `auth` - A hash containing values user || username, password || pass, and sendImmediately (optional). [See more info here](https://github.com/mikeal/request#http-authentication).
54- `json` - sets body but to JSON representation of value and adds Content-type: application/json header. Additionally, parses the response body as json.
55- `multipart` - (experimental) array of objects which contains their own headers and body attribute. Sends multipart/related request. See example below.
56- `followRedirect` - follow HTTP 3xx responses as redirects. defaults to true.
57- `followAllRedirects` - follow non-GET HTTP 3xx responses as redirects. defaults to false.
58- `maxRedirects` - the maximum number of redirects to follow, defaults to 10.
59- `encoding` - Encoding to be used on setEncoding of response data. If set to null, the body is returned as a Buffer.
60- `pool` - A hash object containing the agents for these requests. If omitted this request will use the global pool which is set to node's default maxSockets.
61- `pool.maxSockets` - Integer containing the maximum amount of sockets in the pool.
62- `timeout` - Integer containing the number of milliseconds to wait for a request to respond before aborting the request
63- `proxy` - An HTTP proxy to be used. Support proxy Auth with Basic Auth the same way it's supported with the url parameter by embedding the auth info in the uri.
64- `oauth` - Options for OAuth HMAC-SHA1 signing. [See more info here](https://github.com/mikeal/request#oauth-signing).
65- `hawk` - Options for [Hawk signing](https://github.com/hueniverse/hawk). The credentials key must contain the necessary signing info, [see hawk docs for details](https://github.com/hueniverse/hawk#usage-example).
66- `strictSSL` - Set to true to require that SSL certificates be valid. Note: to use your own certificate authority, you need to specify an agent that was created with that ca as an option.
67- `jar` - Set to false if you don't want cookies to be remembered for future use or define your custom cookie jar ([see mikeal/request's examples section](https://github.com/mikeal/request#examples))
68- `aws` - object containing aws signing information, should have the properties key and secret as well as bucket unless you're specifying your bucket as part of the path, or you are making a request that doesn't use a bucket (i.e. GET Services)
69- `httpSignature` - Options for the [HTTP Signature Scheme](https://github.com/joyent/node-http-signature/blob/master/http_signing.md) using [Joyent's library](https://github.com/joyent/node-http-signature). The keyId and key properties must be specified. See the docs for other options.
70- `localAddress` - Local interface to bind for network connections.
71- `ignoreErrors` - Ignore the status code returned (if any).
72
73### Usage Examples
74
75#### Google Closure
76In this example, we're using google's closure service to compile a JS file.
77
78```js
79grunt.initConfig({
80  http: {
81    closure: {
82      options: {
83        url: 'http://closure-compiler.appspot.com/compile',
84        method: 'POST',
85        form: {
86          output_info: 'compiled_code',
87          output_format: 'text',
88          compilation_level: 'SIMPLE_OPTIMIZATIONS',
89          warning_level: 'default'
90        },
91        sourceField: 'form.js_code'
92      },
93      files: {
94        'build/main.js': 'src/main.js'
95      }
96    }
97  }
98});
99```
100
101## Contributing
102In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).
103
104## [Release History](/johngeorgewright/grunt-http/releases)
105
Note: See TracBrowser for help on using the repository browser.