[517] | 1 | # grunt-http |
---|
| 2 | |
---|
| 3 | > Sends a HTTP request and deals with the response. |
---|
| 4 | |
---|
| 5 | [](https://nodei.co/npm/grunt-http) |
---|
| 6 | |
---|
| 7 | ## Getting Started |
---|
| 8 | This plugin requires Grunt `~0.4.1` |
---|
| 9 | |
---|
| 10 | If 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 |
---|
| 13 | npm install grunt-http --save-dev |
---|
| 14 | ``` |
---|
| 15 | |
---|
| 16 | Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript: |
---|
| 17 | |
---|
| 18 | ```js |
---|
| 19 | grunt.loadNpmTasks('grunt-http'); |
---|
| 20 | ``` |
---|
| 21 | |
---|
| 22 | ## The "http" task |
---|
| 23 | |
---|
| 24 | ### Overview |
---|
| 25 | In your project's Gruntfile, add a section named `http` to the data object passed into `grunt.initConfig()`. |
---|
| 26 | |
---|
| 27 | ```js |
---|
| 28 | grunt.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 | |
---|
| 40 | If 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 | |
---|
| 44 | grunt-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 |
---|
| 76 | In this example, we're using google's closure service to compile a JS file. |
---|
| 77 | |
---|
| 78 | ```js |
---|
| 79 | grunt.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 |
---|
| 102 | In 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 | |
---|