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.
$ pnpm i http-z
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
*/
Parses HTTP request/response raw message and returns a model.
rawMessage: string
- HTTP raw message.opts: HttpZParserOptions
- options, optional.
const messageModel = parse(plainMessage)
Builds HTTP request/response raw message from the model.
messageModel: HttpZBuilderModel
- HTTP message model.opts: HttpZBuilderOptions
- options, optional.
const plainMessageParsed = build(messageModel)
Different utils used by the library. Can be used externally.
Different HTTP constants (methods, headers, etc.)
- RFC 7230: Hypertext Transfer Protocol (HTTP/1.1)
- RFC 7578: Returning Values from Forms: multipart/form-data
- RFC 2046: Multipurpose Internet Mail Extensions
Licensed under the MIT license.
Alexander Mac