go标准库之net/http/cgi

golang  

net/http/cgi

  1. cgi包实现了CGI(Common Gateway Interface, 公共网关协议)
  2. 注意使用CGI意味着对每一个请求开始一个新的进程,这显然要比使用长期运行的服务程序要低效.
  3. 本包主要是为了兼容现有的系统.
  4. 什么是CGI?
  5. CGI不是一门编程语言.它是网页的表单和你写的程序之间通信的一种协议.
  6. 可以用任何语言写一个CGI脚本,这些语言只要能接收输入输出信息,读取环境变量.
  7. 所以几乎所有的编程语言都能写一个CGI脚本,例如:Python,C,shell
  8. CGI脚本的结构
  9. 典型的CGI脚本做了如下的事情:
  10. 1.读取用户提交表单的信息.
  11. 2.处理这些信息(也就是实现业务).
  12. 3.输出,返回HTML响应(返回处理完的数据).
  13. CGI总结:
  14. CGI就是一种通信协议,它把用户传递过来的数据转变成一个k-v字典.这个字典中不光有用户的数据,还有HTTP协议的参数.
  15. 它做的就是把数据,组成一个固定结构形式的数据.方便任何符合CGI协议的程序都可以调用!但是CGI不是复杂通信(传输数据)
  16. 的,通信的话是通过socket,也就是server.
  • func Request

    返回一个当前环境下的HTTP请求.它假设当前程序执行在CGI环境下,成功返回的Request的Body是可读取数据的.

  • func RequestFromMap

    使用CGI变量集params创建一个HTTP请求.返回的Request的Body是没有数据的

  • func Serve

    在当前活跃CGI环境下执行handler;如当前无CGI环境,会返回错误.handler为nil时将使用http.DefaultServeMux

  • type Handler struct

    Handler在子进程中执行具有一个CGI环境的可执行程序.

    1. Path CGI可执行文件的路劲
    2. Root handler的根URI前缀,"" 代表 "/"
    3. Dir Dir指定CGI程序的工作目录.如果Dir""则使用Path的基目录;如果Path没有基目录则使用当前工作目录.
    4. Env 额外设置的环境变量(如果有),格式为"key=value"
    5. InheritEnv host继承的环境变量,只有"key"
    6. Logger 可选的logger接口切片,如为nil则使用log.Print
    7. Args 可选的传递给子进程的参数
    8. PathLocationHandler CGI进程返回一个Location头,且其值以"/"开始时,本字段指定处理内部重定向的根部HTTP Handler.一般会使用http.DefaultServeMux.如果为nil,返回一个本地URI路劲的CGI回复会发送给客户端,不进行内部跳转.


评论 0

发表评论

Top