Standard, framework-agnostic HTTP interfaces for JavaScript servers and clients.
Installation
npm install servie --save
Usage
import { Body, Request, Response, Headers, AbortController } from "servie";
Servie is a universal package, meaning node.js and browsers are supported without needing configuration. This means the primary endpoint requires some dom
types in TypeScript. When in a node.js, or browser, only environment, prefer importing servie/dist/{node,browser}
instead.
Body
Base HTTP class shared between Request
and Response
.
new Body(body, headers);
Body
Supported body types, depending on environment:
- Node.js -
string | Buffer | ArrayBuffer | Readable | null | undefined
- Browser -
string | ArrayBuffer | ReadableStream | null | undefined
Properties and Methods
bodyUsed
Boolean whether the body is consumedrawBody
Returns the raw body if not consumedtext()
Returns the body as a Promise<string>
json()
Returns the body with JSON.parse
as Promise<any>
arrayBuffer()
Returns the body as a Promise<ArrayBuffer>
clone()
Clones an unconsumed body
Request
HTTP class for modelling a Request
, extends Body
.
new Request(input [, init]);
Input
A URL string or another Request
instance to clone from.
Init
method?
HTTP request method.body?
Any support body types.signal?
A signal from an AbortController
.headers?
A map, list of tuples, or Header
instance to initialize from.trailer?
A promise resolve to a support header initialization types (above).
Properties and Methods
url
Requested url stringmethod
Requested method stringsignal
Signal event emitterheaders
A Header
instancetrailer
A Promise<Header>
instanceclone()
Clones the request into a new instance
Response
HTTP class for modelling a Response
, extends Body
.
new Response([body [, init]]);
Body
One of the support body types (above).
Init
status?
The numeric HTTP response status codestatusText?
The HTTP response status text
Properties and Methods
status
The numeric HTTP response status codestatusText
The HTTP response status textok
Boolean indicates successful response (status
between 200 and 299)headers
A Header
instancetrailer
A Promise<Header>
instanceclone()
Clones the response into a new instance
Map representation of HTTP headers.
new Headers([init]);
Init
Initialize headers from Iterable<HeaderTuple>
, a HeadersObject
or an existing Headers
instance.
Methods
set(name: string, value: string | string[]): void
Set a HTTP header by overriding case-insensitive headers of the same nameappend(name: string, value: string | string[]): void
Append a HTTP headerget(name: string): string | undefined
Retrieve a case-insensitive HTTP headergetAll(name: string): string[]
Retrieve a list of matching case-insensitive HTTP headershas(name: string): boolean
Check if a case-insensitive header is already setdelete(name: string): void
Delete a case-insensitive headerasObject(): HeadersObject
Return the lower-cased headers as a plain objectextend(obj: HeadersInit): this
Extends the current headers with an objectkeys()
Iterable of the available header namesvalues()
Iterable of header valuesentries()
Iterable of headers as [key, value]
clear()
Clears the headers instanceclone()
Clones the Headers
instance
AbortController
Simple controller for aborting a Request
instance.
new AbortController();
Properties and Methods
signal
A Signal
instance to pass to a Request
instanceabort()
Used to abort any listening requests through the signal
Implementation
If you're building the transports for Servie, there are some life cycle events you need to be aware of:
- Listen to the
error
event on signal
for errors - Listen to the
abort
event on signal
to destroy the connection - Resolve
trailer
promise and append to HTTP request or response - There are some existing built-in type-safe events in
SignalEvents
you can support
JavaScript
This module is designed for ES2017 environments and published with TypeScript definitions on NPM.
License
Apache 2.0