gojs.net.http.Response
请求的响应对象,通常无需初始化,可以直接在请求相关的边缘脚本中调用。
方法和属性
// 设置响应Header
// 值可以是一个字符串,也可以是一组字符串
resp.setHeader(name, value)
resp.setHeader(name, values)
// 删除某个响应Header
resp.deleteHeader(name)
// 获取响应的Header
// 如果请求还未执行,则只会返回显示自定义的Header
resp.header
// 发送内容
//
// 发送内容后终止请求往下执行。
//
// 参数:
// status 状态码,通常是200
// body 要发送的内容字符串
resp.send(status, body)
// 发送文件
//
// 发送内容后终止请求往下执行。
//
// 参数:
// status 状态码,通常是200
// path 要发送的文件路径
resp.sendFile(status, path)
// 跳转到目标URL
//
//
// 参数:
// status 状态码,可以是301、302、303、307和308
// url 要跳转到的目标URL
resp.redirect(status, url)
// 发送服务器响应对象
//
// 发送通过 gojs.net.http.client.Client 获取的响应对象(具体请参考本文中示例)
//
// 参数:
// status 状态码,可以是301、302、303、307和308
// resp 通过 gojs.net.http.client.Client 获取的响应对象
resp.send(status, clientResp)
示例
简单的Hello, World
// 查找匹配 hello 的请求路径
if (req.path == "/hello") {
// 发送内容,发送后,请求不会继续执行
resp.send(200, "Hello, World")
return
}
跳转到某个URL
// 判断要执行跳转的URL
if (req.path == "/redirect") {
// 跳转到 /redirect-js
resp.redirect(302, "/redirect-js")
return
}
发送HTTP Client获取的响应对象
一个简单的代理程序,将所有以 /api
开头的请求转发到 https://flex.dd.ci
上(这段代码只支持GET方法,你可以修改让它支持POST):
// 判断以 /api 开头
if (req.path.startsWith("/api")) {
// 构造客户端对象
let client = new gojs.net.http.client.Client()
// 组合新的URL
let url = "https://flex.dd.ci" + req.uri
// 发送HTTP请求
let clientReq = new gojs.net.http.client.Request(url)
let clientResp = client.do(clientReq)
// 发送数据到客户端
resp.send(clientResp.status, clientResp)
return
}