HttpServer
HttpServer
HttpServer类用来代表http服务器,它支持http
和https
协议
创建对象
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:Log | void | 修改日志对象 |
any | 方法 | url:string, callback: (ctx:object) => void, routerParam?:any | void | 注册所有请求方法的路由 |
get | 方法 | url string, callback: (ctx:object) => void, routerParam?:any | void | 注册GET请求路由 |
post | 方法 | url string, callback: (ctx:object) => void, routerParam?:any | void | 注册POST请求路由 |
put | 方法 | url string, callback: (ctx:object) => void, routerParam?:any | void | 注册PUT请求路由 |
delete | 方法 | url string, callback: (ctx:object) => void, routerParam?:any | void | 注册DELETE请求路由 |
head | 方法 | url string, callback: (ctx:object) => void, routerParam?:any | void | 注册HEAD请求路由 |
options | 方法 | url string, callback: (ctx:object) => void, routerParam?:any | void | 注册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
方法用来注册一个只接收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));
参数
示例
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()
方法让过滤器跳转到下一个路由。
提示
- 可以同时注册多个
filter
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();