Proxy classes for creating a http server
There are all Server classes feature.
Your endpoints should implement Endpoint class interface
(get route() and async handle(request) methods).
Also you can add own handlers (implements handle(reqestStream, responseStream)).Handler is a top level logic object, who intrreact with IO streams directly.options is a node:http options, who pass when server starting.
consthttp=require('node:http');constconsole=require('node:console');const{
Server,handler: {endpoint: {
EndpointHandler,
EndpointsHandler,
EndpointHandlers,
EndpointRequiredHandler,},error: {
LogErrorHandler,
UnexpectedErrorHandler,
InvalidRequestErrorHandler,
HandlerNotFoundErrorHandler,},},request: {chunk: { JsonServerRequest, ChunkServerRequest },},response: {chunk: { JsonServerResponse, ChunkServerResponse },},}=require('objective-http').server;newServer({handler: newUnexpectedErrorHandler({origin: newLogErrorHandler({origin: newInvalidRequestErrorHandler({origin: newHandlerNotFoundErrorHandler({origin: newEndpointRequiredHandler({origin: newEndpointHandlers({handlers: [newEndpointHandler({endpoint: newMyEndpoint(),request: newChunkServerRequest({}),response: newChunkServerResponse({}),}),newEndpointHandler({endpoint: newMyEndpoint(),request: newChunkServerRequest({}),response: newChunkServerResponse({})}),newEndpointsHandler({endpoints: [newMyJsonEndpoint(),newMyJsonEndpoint(),newMyJsonEndpoint(),],request: newJsonServerRequest({origin: newChunkServerRequest({}),}),response: newJsonServerResponse({origin: newChunkServerResponse({}),}),}),],}),}),response: newChunkServerResponse({}),}),response: newChunkServerResponse({}),}),logger: console,}),response: newChunkServerResponse({}),}),options: {port: 8080},
http,});or jsut use autoconfig.
const{ server }=require('objective-http').server.autoconfig;const{ env }=require('ndoe:process');server({ env, endpoints });MyEndpoint class example:
classMyEndpoint{route={method: 'GET',path: '/test'}asynchandle(request){try{constprocessResult=awaitsomeProcess();return{status: 200,body: processResult.toString()};}catch(e){return{status: 404,body: 'process does not found anything'};}}}Simple wrapper for requests. options passing into http.request(oprions, ...)
consthttp=require('node:http');const{request: {chunk: { JsonClientRequest, ChunkClientRequest },},response: {chunk: { JsonClientResponse, ChunkClientResponse },},}=require('objective-http').client;constrequest=newJsonClientRequest({origin: newChunkClientRequest({http: http,response: newJsonClientResponse({origin: newChunkClientResponse({})}),}),});constresponse=awaitrequest.with({options: {host: 'localhost',port: 80,method: 'GET',path: '/test',},body: {some: 'body'}}).send()console.log(JSON.stringify(response.body));