gojs.net.http.Response

请求的响应对象,通常无需初始化,可以直接在请求相关的边缘脚本中调用。

方法和属性

  1. // 设置响应Header
  2. // 值可以是一个字符串,也可以是一组字符串
  3. resp.setHeader(name, value)
  4. resp.setHeader(name, values)
  5. // 删除某个响应Header
  6. resp.deleteHeader(name)
  7. // 获取响应的Header
  8. // 如果请求还未执行,则只会返回显示自定义的Header
  9. resp.header
  10. // 发送内容
  11. //
  12. // 发送内容后终止请求往下执行。
  13. //
  14. // 参数:
  15. // status 状态码,通常是200
  16. // body 要发送的内容字符串
  17. resp.send(status, body)
  18. // 发送文件
  19. //
  20. // 发送内容后终止请求往下执行。
  21. //
  22. // 参数:
  23. // status 状态码,通常是200
  24. // path 要发送的文件路径
  25. resp.sendFile(status, path)
  26. // 跳转到目标URL
  27. //
  28. // v0.4.7加入
  29. //
  30. // 参数:
  31. // status 状态码,可以是301、302、303、307和308
  32. // url 要跳转到的目标URL
  33. resp.redirect(status, url)
  34. // 发送服务器响应对象
  35. //
  36. // 发送通过 gojs.net.http.client.Client 获取的响应对象(具体请参考本文中示例)
  37. // v0.4.7加入
  38. //
  39. // 参数:
  40. // status 状态码,可以是301、302、303、307和308
  41. // resp 通过 gojs.net.http.client.Client 获取的响应对象
  42. resp.send(status, clientResp)

示例

简单的Hello, World

  1. // 查找匹配 hello 的请求路径
  2. if (req.path == "/hello") {
  3. // 发送内容,发送后,请求不会继续执行
  4. resp.send(200, "Hello, World")
  5. return
  6. }

跳转到某个URL

适用于v0.4.7及以后版本。

  1. // 判断要执行跳转的URL
  2. if (req.path == "/redirect") {
  3. // 跳转到 /redirect-js
  4. resp.redirect(302, "/redirect-js")
  5. return
  6. }

发送HTTP Client获取的响应对象

适用于v0.4.7及以后版本。

一个简单的代理程序,将所有以 /api 开头的请求转发到 https://goedge.cn 上(这段代码只支持GET方法,你可以修改让它支持POST):

  1. // 判断以 /api 开头
  2. if (req.path.startsWith("/api")) {
  3. // 构造客户端对象
  4. let client = new gojs.net.http.client.Client()
  5. // 组合新的URL
  6. let url = "https://goedge.cn" + req.uri
  7. // 发送HTTP请求
  8. let clientReq = new gojs.net.http.client.Request(url)
  9. let clientResp = client.do(clientReq)
  10. // 发送数据到客户端
  11. resp.send(clientResp.status, clientResp)
  12. return
  13. }