npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

http-transport

v1.1.3

Published

A basic isomorphic Javascript interface and implementations for HTTP requests

Downloads

16

Readme

HttpTransport

Build Status NPM version

A basic promise-driven Javascript interface for HTTP requests.

Installation

$ npm install http-transport

Rationale

  • Directly accessing HTTP data sources in domain code leads to difficulty in testing and is a violation of SRP.
  • Complicated data abstraction layers are often too heavy-handed or not flexible enough.
  • Writing isomorphic code that uses HTTP requests can be difficult.

Overview

This is a very small wrapper around the httpinvoke module that compresses the external API into the four primary HTTP verbs as methods that return a Promise.

The HttpTransport class is meant to be instantiated once and shared throughout the application when domain code needs access to the HTTP layer, e.g. calling REST services.

Using a simple facade to make GET request vs e.g $.get() or the Node http module allows for clean, testable, isomorphic code.

Methods

var HttpTransport = require('http-transport');

var transport = new HttpTransport();

transport.get(url, params?): Promise

Execute a GET request with optional query parameters and return a Promise for the response.

// Basic GET
transport.get('/users')
  .then(function(users) {
    ...
  });

// With query params (fetches /users?group=admins)
transport.get('/users', { group: 'admins' })
  .then(function(users) {
    ...
  });

transport.post(url, data?): Promise

Execute a POST request with optional object data passed as application/x-www-form-urlencoded and return a Promise for the response.

transport.post('/blogs', { content: 'Hello, world!' })
  .then(function(blog) {
    ...
  });

transport.put(url, data?): Promise

Execute a PUT request with optional object data passed as application/x-www-form-urlencoded and return a Promise for the response.

transport.put('/users', { id: 123, name: 'Billy' })
  .then(function(user) {
    ...
  });

transport.delete(url, params?): Promise

Execute a DELETE request with optional query parameters and return a Promise for the response.

transport.delete('/users', { id: 123 })
  .then(function(resp) {
    ...
  });

JSONP

The JsonpTransport class also implements the AbstractTransport interface and can be used the same as the HttpTransport class, except it will throw an error if any method other than GET is used.

var JsonpTransport = require('http-transport').JsonpTransport;

var transport = new JsonpTransport();

transport.get('http://api.external.com/').then(...);

Testing

$ npm test

License

MIT