Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface IImmutable

Extends the reponse to have a useful Url property that provides quick access to the URL parts. It also inherits the extended json method from {@link IBodyMutable}

example

URL parts

import { fetcher } from '@ef-carbon/fetcher';
const response = await fetcher('https://google.com');
console.log(response.Url.protocol); // `https:`
example

Perform verification of JSON payload

import { Json, isIJsonObject } from '@ef-carbon/fetch';
import { fetcher, Verify } from '@ef-carbon/fetcher';

interface IData {
  name: string;
}

function isIData(json: Json): json is IData {
  return isIJsonObject(json) && typeof json.name === 'string';
}

const verify: Verify<IData> = isIData;

// expected payload `{ "name": "Rick Sanchez" }`
const response = await fetcher('http://endpoint.com/data.json');

const data = response.json(verify);  // verification
console.log(data.name);
example

Perform conversion of JSON payload

import { Json, isIJsonObject } from '@ef-carbon/fetch';
import { fetcher, Convert } from '@ef-carbon/fetcher';

interface IData {
  name: string;
}

function isIData(json: Json): json is IData {
  return isIJsonObject(json) && typeof json.name === 'string';
}

function getName(json: Json): string {
  if (!isIData(json)) {
    throw TypeError(`Invalid JSON payload: ${JSON.stringify(json)}`);
  }

  return json.name;
}

const convert: Convert<string> = getName;

// expected payload `{ "name": "Rick Sanchez" }`
const response = await fetcher('http://endpoint.com/data.json');

const name = response.json(convert);  // conversion
console.log(name);

Hierarchy

  • IImmutable
  • IImmutable
    • IImmutable

Index

Properties

Url

Url: IUrlImmutable

bodyUsed

bodyUsed: boolean

headers

headers: IHeadersImmutable

ok

ok: boolean

status

status: number

statusText

statusText: string

url

url: string

Methods

clone

  • clone(): IMutable
  • Returns IMutable