Skip to content

AlexanderMac/http-z

Repository files navigation

http-z

HTTP message (request/response) parser/builder according to the rules defined in RFC 7230

Works in Node.js and in the browser, has zero dependencies.

Build Status Code Coverage License npm version

Contents

Install

$ pnpm i http-z

Usage

import { parse, build } from 'http-z'

const plainMessage = [
  'GET /features?p1=v1 HTTP/1.1',
  'Host: example.com',
  'Accept: *',
  'Accept-Encoding: gzip,deflate',
  'Accept-Language: en-US;q=0.6, en;q=0.4',
  '',
  ''
].join('\r\n')

const messageModel = parse(plainMessage)
console.log(messageModel)

/* output:
{
  "method": "GET",
  "protocolVersion": "HTTP/1.1",
  "host": "example.com",
  "target": "/features?p1=v1",
  "path": "/features",
  "queryParams": [
    { "name": "p1", "value": "v1" }
  ],
  "headers": [
    { "name": "Host", "value": "example.com" },
    { "name": "Accept", value": "*" },
    { "name": "Accept-Encoding", "value": "gzip,deflate" },
    { "name": "Accept-Language", "value": "en-US;q=0.6, en;q=0.4" }
  ],
  "headersSize": 135,
  "bodySize": 0
}
*/

const plainMessageParsed = build(messageModel)
console.log(plainMessageParsed)

/* output:
GET /features?p1=v1 HTTP/1.1
Host: example.com
Accept: *
Accept-Encoding: gzip,deflate
Accept-Language: en-US;q=0.6, en;q=0.4


*/

API

function parse(rawMessage: string, opts: HttpZParserOptions = {}): HttpZParserModel | never

Parses HTTP request/response raw message and returns a model.

  • rawMessage: string - HTTP raw message.
  • opts: HttpZParserOptions - options, optional.
const messageModel = parse(plainMessage)

function build(messageModel: HttpZBuilderModel, opts?: HttpZBuilderOptions): string | never

Builds HTTP request/response raw message from the model.

  • messageModel: HttpZBuilderModel - HTTP message model.
  • opts: HttpZBuilderOptions - options, optional.
const plainMessageParsed = build(messageModel)

utils: object

Different utils used by the library. Can be used externally.

consts: object

Different HTTP constants (methods, headers, etc.)

References

License

Licensed under the MIT license.

Author

Alexander Mac

About

Parse/build HTTP message to/from model

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published