HttpServer

HttpServer

HttpServer类用来代表http服务器,它支持httphttps协议

创建对象

HttpServer类的构造函数接收一个可选参数config,该参数用来对HttpServer对象进行配置。

语法

let server = new HttpServer(config?:object);

提示

没有指定配置信息时,服务器默认监听:8080

示例1

创建一个默认的HttpServer对象。

import {HttpServer} from "http";

//创建一个HttpServer对象,默认监听8080端口
let server = new HttpServer();
server.start();

示例2

创建自定义配置的HttpServer对象

let config = {
	addr: ":8081",//配置服务器端口号
};
let server = new HttpServer(config);

配置

关于config的更多配置信息请查看Config

API

HttpServer对象的API如下

属性与方法

方法类型参数返回值说明
log属性log:Logvoid修改日志对象
any方法url:string, callback: (ctx:object) => void, routerParam?:anyvoid注册所有请求方法的路由
get方法url string, callback: (ctx:object) => void, routerParam?:anyvoid注册GET请求路由
post方法url string, callback: (ctx:object) => void, routerParam?:anyvoid注册POST请求路由
put方法url string, callback: (ctx:object) => void, routerParam?:anyvoid注册PUT请求路由
delete方法url string, callback: (ctx:object) => void, routerParam?:anyvoid注册DELETE请求路由
head方法url string, callback: (ctx:object) => void, routerParam?:anyvoid注册HEAD请求路由
options方法url string, callback: (ctx:object) => void, routerParam?:anyvoid注册OPTIONS请求路由
ws方法url string, callback: (wsCtx:object) => void,void注册WebSocket端点
error方法callback: (ctx:object,status:number, err:error) => void,void注册全局错误处理器
filter方法callback: (ctx:object) => void,void注册全局过滤器
start方法void启动服务器

log

log属性用来获取和修改日志对象,默认使用全局log对象,可以根据需要来修改

示例

import {HttpServer} from "http";
let server = new HttpServer({addr: ":8888"});
server.log=new Log()

any

any方法用来注册一个可以接收任何http请求方法的路由

语法

server.any(url:string, callback: (ctx:object) => void, routerParam?:any)

参数

示例

import {HttpServer} from "http";

let server = new HttpServer({addr: ":8888"});
server.any("/test", (ctx) => {
	ctx.body = "hello vino";
})
server.start();
//浏览器访问 http://localhost:8888/test 时,页面显示"hello vino"

get

get方法用来注册一个只接收get请求的路由

语法

server.get(url:string, callback: (ctx:object) => void, routerParam?:any)

参数

示例

import {HttpServer} from "http";

let server = new HttpServer({addr: ":8888"});
server.get("/test", (ctx) => {
	ctx.body = "hello vino";
})
server.start();
//浏览器访问 http://localhost:8888/test 时,页面显示"hello vino"

post

post方法用来注册一个只接收post请求的路由

语法

server.post(url:string, callback: (ctx:object) => void, routerParam?:any)

参数

示例

import {HttpServer} from "http";

let server = new HttpServer({addr: ":8888"});
server.post("/test", (ctx) => {
	ctx.body = "hello vino";
})
server.start();
//浏览器访问 http://localhost:8888/test 时返回404错误,请使用api客户端发送post请求

put

put方法用来注册一个只接收put请求的路由

语法

server.put(url:string, callback: (ctx:object) => void, routerParam?:any)

参数

示例

import {HttpServer} from "http";

let server = new HttpServer({addr: ":8888"});
server.put("/test", (ctx) => {
   ctx.body = "hello vino";
});
server.start();
//浏览器访问 http://localhost:8888/test 时返回404错误,请使用api客户端发送put请求

delete

delete方法用来注册一个只接收delete请求的路由

语法

server.delete(url:string, callback: (ctx:object) => void, routerParam?:any)

参数

示例

import {HttpServer} from "http";

let server = new HttpServer({addr: ":8888"});
server.delete("/test", (ctx) => {
	ctx.body = "hello vino";
});
server.start();
//浏览器访问 http://localhost:8888/test 时返回404错误,请使用api客户端发送delete请求

head方法用来注册一个只接收head请求的路由

语法

server.head(url:string, callback: (ctx:object) => void, routerParam?:any)

参数

示例

import {HttpServer} from "http";

let server = new HttpServer({addr: ":8888"});
server.head("/test", (ctx) => {
	ctx.body = "hello vino";
});
server.start();
//浏览器访问 http://localhost:8888/test 时返回404错误,请使用api客户端发送head请求

options

options方法用来注册一个只接收options请求的路由

语法

server.options(url:string, callback: (ctx:object) => void, routerParam?:any)

参数

示例

import {HttpServer} from "http";

let server = new HttpServer({addr: ":8888"});
server.options("/test", (ctx) => {
	ctx.body = "hello vino";
});
server.start();
//浏览器访问 http://localhost:8888/test 时返回404错误,请使用api客户端发送options请求

ws

ws方法用来注册WebSocket端点。

语法

server.ws(url, callback(wsCtx));

参数

  • url 请求url地址 查看详情
  • callback 请求处理回调函数。该函数会接收一个wsCtx对象

示例

server.ws("/socket", (wsClient) => {
	wsClient.on("message", (msg) => {
       console.log(msg);
	})
});

error

注册一个全局错误处理器,当web程序出现错误时,该处理器将被执行。开发者可以自定义错误响应

语法

server.error(callback: (ctx:object,status:number, err:error) => void);

参数

  • ctx : ctx对象
  • status: 错误状态码
  • err : Error对象

示例

server.error((ctx, status, err) => {
   ctx.body = {code: status, message: err.message};
});

filter

注册过滤器,该server对象的所有请求都会先经过filter,可以用来实现权限控制、安全验证、日志记录等操作。 可通过调用ctx.next()方法让过滤器跳转到下一个路由。

提示

  1. 可以同时注册多个filter
  2. vino会按照注册的顺序来调用多个filter

示例

server.filter((ctx) => {
	console.log("第一个过滤器")
	//调用next方法,让请求转发到下一个filter中
	ctx.next();
});
server.filter((ctx) => {
	console.log("第二个过滤器")
	//调用next方法,让请求转发到下一个路由中
	ctx.next();
});

start

启动服务器,所有路由过滤器错误处理都应该放在start方法之前。

let server = new HttpServer();
//所有api\error\filter的注册
server.start();
更新时间 10/12/2024, 2:37:19 PM