https://github.com/xinpianchang/xpc-http
a http utility for node.js
https://github.com/xinpianchang/xpc-http
context http nextjs
Last synced: 6 months ago
JSON representation
a http utility for node.js
- Host: GitHub
- URL: https://github.com/xinpianchang/xpc-http
- Owner: xinpianchang
- License: mit
- Created: 2021-07-16T13:44:02.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-05-11T07:46:56.000Z (over 2 years ago)
- Last Synced: 2024-11-18T09:13:32.008Z (about 1 year ago)
- Topics: context, http, nextjs
- Language: TypeScript
- Homepage:
- Size: 30.3 KB
- Stars: 4
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Instructions
[![@newstudios/http-utils][npm-image]][npm-url]
## Npm install
```shell
npm install --save @newstudios/http-utils
```
## Yarn install
```shell
yarn add @newstudios/http-utils
```
# Usage notice
The package is a commonjs library, and needs some environments to work as expected
```bash
# whether the http server is behind a proxy, default is false
HTTP_BEHIND_PROXY = true
# http forwarded ip header name, default is 'x-forwaded-for'
HTTP_FORWARDED_IP_HEADERS = x-forwarded-for
# http forwaded ips max count, default is 0, means no limit restrictions
HTTP_MAX_IPS_COUNT = 0
```
# API
```typescript
export declare function getHeader(req: IncomingMessage, field: F): HeaderType;
export declare function getUserAgent(req: IncomingMessage): string;
export declare function getHost(req: IncomingMessage): string;
/**
* Parse the "Host" header field hostname
* and support X-Forwarded-Host when a
* proxy is enabled.
*/
export declare function getHostname(req: IncomingMessage): string;
/**
* Get WHATWG parsed URL.
* Lazily memoized.
*/
export declare function getURL(req: IncomingMessage): URL;
export declare function getHref(req: IncomingMessage): string;
export declare function getOrigin(req: IncomingMessage): string;
/**
* Return the protocol string "http" or "https"
* when requested with TLS. When the proxy setting
* is enabled the "X-Forwarded-Proto" header
* field will be trusted. If you're running behind
* a reverse proxy that supplies https for you this
* may be enabled.
*/
export declare function getProtocol(req: IncomingMessage): string;
/**
* When `config.proxy` is `true`, parse
* the "X-Forwarded-For" ip address list.
*
* For example if the value was "client, proxy1, proxy2"
* you would receive the array `["client", "proxy1", "proxy2"]`
* where "proxy2" is the furthest down-stream.
*/
export declare function getIps(req: IncomingMessage): string[];
/**
* Return request's remote address
* When `config.proxy` is `true`, parse
* the "X-Forwarded-For" ip address list and return the first one
*/
export declare function getIp(req: IncomingMessage): string;
export declare function setIp(req: IncomingMessage, ip: string): void;
export declare function setHeader(res: ServerResponse, field: Record): void;
export declare function setHeader(res: ServerResponse, field: string, val: any): void;
export declare function appendHeader(res: ServerResponse, field: string, val: any): void;
export declare function appendHeaders(res: ServerResponse, init: HeadersInit): void;
export declare type SetCookieOptions = Omit;
/**
* Get cookie from request headers cookie, value will be decoded with decodeURIComponent
* @returns {string | undefined}
*/
export declare function getCookie(req: IncomingMessage, name: string): string | undefined;
/**
* set cookie on response, value will be encoded with encodeURIComponent
* @param options {SetCookieOptions} options.maxAge in milliseconds
*/
export declare function setCookie(res: ServerResponse, name: string, val: string, options?: SetCookieOptions): void;
export declare function clearCookie(res: ServerResponse, name: string, options?: SetCookieOptions): void;
```
[npm-image]: https://img.shields.io/npm/v/@newstudios/http-utils.svg?style=flat-square
[npm-url]: https://npmjs.org/package/@newstudios/http-utils