Git Product home page Git Product logo

fetch-as's Introduction

๐Ÿšจ No longer maintained. Moved to @reallyland/node_mod. ๐Ÿšจ

fetch-as

Fetch data in Node.js


Follow me

Version Node version MIT License

Downloads Total downloads Packagephobia Bundlephobia

CircleCI Dependency Status codecov Coverage Status

codebeat badge Codacy Badge Code of Conduct

Fetch API in Node.js with specific response type

Table of contents

Pre-requisites

Install

# Install via NPM
$ npm install --save fetch-as

Usage

TypeScript or ES modules

/**
 * NOTE: Additional typings file from `node-fetch` is required
 * if user decides to create their own `options` and it is based on
 * `RequestInit` from `@types/node-fetch`.
 * 
 * Run the following command to install the additional typings:-
 * 
 * $ npm install --dev @types/node-fetch
 */
import { RequestInit } from 'node-fetch';

import fetchAs from 'fetch-as';
// OR import each method explicitly
// import {
//   fetchAsArrayBuffer,
//   fetchAsBlob,
//   fetchAsBuffer,
//   fetchAsJson,
//   fetchAsText,
//   fetchAsTextConverted,
// } from 'fetch-as';

async function runFetch() {
  const opts: RequestInit = {
    method: 'GET',
  };
  const url = 'http://www.mocky.io/v2/5a50cfa82f000085158d5315';
  const jsonData = await fetchAs.json(url, opts); // OR fetchAsJson(url);

  console.log('# json', jsonData.data);
  // {
  //   "status": 200,
  //   "message": "OK",
  //   "by": "fetch-as"
  // }
}

runFetch();

Node.js

const { fetchAs } = require('fetch-as');
// OR require each method explicitly
// const {
//   fetchAsArrayBuffer,
//   fetchAsBlob,
//   fetchAsBuffer,
//   fetchAsJson,
//   fetchAsText,
//   fetchAsTextConverted,
// } = require('fetch-as');

async function runFetch() {
  const url = 'http://www.mocky.io/v2/5a50cfa82f000085158d5315';
  const jsonData = await fetchAs.json(url); // OR fetchAsJson(url);

  console.log('# json', jsonData.data);
  // {
  //   "status": 200,
  //   "message": "OK",
  //   "by": "fetch-as"
  // }
}

runFetch();

@types/node-fetch for TypeScript users

For TypeScript users, you are recommended to install the required typing file from @types/node-fetch as one of the devDependencies for the package to work properly as some of the typings used in the package are from the said typing file but they are not included as part of the bundle.

Otherwise, see Options for a list of supported options.

$ npm install --dev @types/node-fetch

API Reference

FetchAsInfo

// Interface
interface FetchAsInfo {
  size: number;
  timeout: number;
  type: "basic"|"cors"|"default"|"error"|"opaque"|"opaqueredirect";
  headers: {
    [key: string]: any;
  };
}

FetchAsReturnType

// Interface
interface FetchAsReturnType<T = any, U = any> {
  status: number;
  info: FetchAsInfo;

  data?: T;
  error?: U;
}
  • status <string> HTTP response status code. Any response that has a HTTP status greater than 399 can be regarded as an error response.

  • info <Object> This contains additional information you might need from a response. See FetchAsInfo for the detailed interface.

    • size <number> Response size.
    • timeout <number> Response timeout.
    • type <string> Response type. Possible values are: basic, cors, default, error, opaque, opaqueredirect.
    • headers <Object> Response headers, e.g. { 'content-type': 'application/json' }.
  • data <?any> This contains the successful response data of the user-specified type, for instance, MyReturnData in the example shown above. Only shows when the HTTP response status code is less than 400.

  • error <?any> This contains the error response data of type T. Only shows when the HTTP response status code is greater than 399.

Each return type have default Generics type of any which means it can be any type in JavaScript and is overridable by user defined type via TypeScript's Generics.

// e.g. Overridable Generics
interface SuccessData {
  message: string;
}

...
const d = await FetchAsJson<SuccessData>(...);

// d will have the type of `FetchAsReturnType<SuccessData, any>>`
assert(d.data.message, '...'); // OK
...

fetchAs

This contains a collection of methods that will convert the response into the specified data type:

  • .arrayBuffer(url[, options]) Method which will return a ArrayBuffer.
  • .blob(url[,options]) Method which will return a Blob.
  • .buffer(url[, options]) Method which will return a Buffer.
  • .json(url[, options]) Method which will return a JSON data which can consumed by JavaScript as Object.
  • .text(url[, options]) Method which will return a text/ string.
  • .textConverted(url[, options]) Method which will return a text/ string, except instead of always converting to UTF-8, encoding sniffing will be performed and text converted to UTF-8, if possible.

fetchAsArrayBuffer(url[, options])

fetchAsBlob(url[, options])

fetchAsBuffer(url[, options])

fetchAsJson(url[, options])

fetchAsText(url[, options])

fetchAsTextConverted(url[, options])

* Please note that encoding is required to be installed in order to use this method.

  • Identical to fetchAsText(url[, options]), except instead of always converting to UTF-8, encoding sniffing will be performed and text converted to UTF-8, if possible.

License

MIT License ยฉ Rong Sen Ng

fetch-as's People

Contributors

motss avatar

Watchers

 avatar  avatar  avatar

fetch-as's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.