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
}