Httpie

A Node.js HTTP client as easy as pie! 🥧
Alternatives To Httpie
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Got13,406235,7158,22517 days ago170May 27, 202399mitTypeScript
🌐 Human-friendly and powerful HTTP request library for Node.js
Node Fetch8,474219,66833,6592 days ago94July 25, 2023190mitJavaScript
A light-weight module that brings the Fetch API to Node.js
Wretch4,170487915 days ago68June 28, 20234mitTypeScript
A tiny wrapper built around fetch with an intuitive syntax. :candy:
Apisauce2,6001,0121952 months ago47June 17, 202334mitJavaScript
Axios + standardized errors + request/response transforms.
Nodejs Roadmap2,376
a year ago79
【Nodejs-Roadmap】侧重于 Node.js 服务端的开发指南,公众号 “Nodejs技术栈”
Promise1,7204,5931725 days ago5July 07, 20204mitPHP
Promise used for asynchronous HTTP requests
Http Vue Loader1,2419242 years ago12February 21, 202042mitJavaScript
load .vue files from your html/js
Download1,14743,0522,0402 years ago73April 02, 202056mitJavaScript
Download and extract files
Restclient1,110
14 months ago31December 28, 202124mitC#
🦄 A Promise based REST and HTTP client for Unity 🎮
Mach8182965 years ago54May 10, 201516JavaScript
HTTP for JavaScript
Alternatives To Httpie
Select To Compare


Alternative Project Comparisons
Readme
httpie
A Node.js HTTP client as easy as pie!

Features

  • Promise- based HTTP requestor
  • Works with HTTP and HTTPS protocols
  • Automatically handles JSON requests and responses
  • Extremely lightweight with no dependencies 678 bytes!
  • Includes aliases for common HTTP verbs: get, post, put, patch, and del

Additionally, this module is delivered as:

Install

$ npm install --save httpie

Usage

Note: The async syntax is for demo purposes you may use Promises in a Node 6.x environment too!

import { get, post } from 'httpie';

try {
  const { data } = await get('https://pokeapi.co/api/v2/pokemon/1');

  // Demo: Endpoint will echo what we've sent
  const res = await post('https://jsonplaceholder.typicode.com/posts', {
    body: {
      id: data.id,
      name: data.name,
      number: data.order,
      moves: data.moves.slice(0, 6)
    }
  });

  console.log(res.statusCode); //=> 201
  console.log(res.data); //=> { id: 1, name: 'bulbasaur', number: 1, moves: [{...}, {...}] }
} catch (err) {
  console.error('Error!', err.statusCode, err.message);
  console.error('~> headers:', err.headers);
  console.error('~> data:', err.data);
}

API

send(method, url, opts={})

Returns: Promise

Any httpie.send request (and its aliases) will always return a Promise.

If the response's statusCode is 400 or above, this Promise will reject with a formatted error see Error Handling. Otherwise, the Promise will resolve with the full ClientRequest stream.

The resolved response will receive a new data key, which will contain the response's full payload. Should the response return JSON content, then httpie will parse it and the res.data value will be the resulting JSON object!

method

Type: String

The HTTP method name it must be uppercase!

url

Type: String or URL

If url is a string, it is automatically parsed with url.parse() into an object.

opts.body

Type: Mixed
Default: undefined

The request's body, can be of any type!

Any non-Buffer objects will be converted into a JSON string and the appropriate Content-Type header will be attached.

Additionally, httpie will always set a value for the Content-Length header!

opts.headers

Type: Object
Default: {}

The custom headers to send with your request.

opts.redirect

Type: Boolean
Default: true

Whether or not redirect responses should be followed automatically.

Note: This may only happen with a 3xx status and if the response had a Location header.

opts.reviver

Type: Function
Default: undefined

An optional function that's passed directly to JSON.parse, allowing you transform aspects of the response data before the httpie request resolves.

Note: This will only run if httpie detects that JSON is contained in the response!

get(url, opts={})

Alias for send('GET', url, opts).

post(url, opts={})

Alias for send('POST', url, opts).

put(url, opts={})

Alias for send('PUT', url, opts).

patch(url, opts={})

Alias for send('PATCH', url, opts).

del(url, opts={})

Alias for send('DELETE', url, opts).

Error Handling

All responses with statusCode >= 400 will result in a rejected httpie request. When this occurs, an Error instance is formatted with complete information:

  • err.message String Identical to err.statusMessage;
  • err.statusMessage String The response's statusMessage value;
  • err.statusCode Number The response's statusCode value;
  • err.headers Object The response's headers object;
  • err.data Mixed The response's payload;

Important: The error's data property may also be parsed to a JSON object, according to the response's headers.

import { get } from 'httpie';

get('https://example.com/404').catch(err => {
  console.error(`(${err.statusCode}) ${err.message}`)
  console.error(err.headers['content-type']);
  console.error(`~> ${err.data}`);
});
//=> "(404) Not Found"
//=> "text/html; charset=UTF-8"
//=> ~> <?xml version="1.0" encoding="iso-8859-1"?>\n<!DOCTYPE html ...</body>\n</html>

License

MIT Luke Edwards

Popular Http Projects
Popular Promise Projects
Popular Networking Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Javascript
Http
Types
Promise
Http Client