您的位置:首页 > 娱乐 > 八卦 > bbs网站源码_网络营销方式举个例子_南宁网站建设及推广_搜索引擎调价平台哪个好

bbs网站源码_网络营销方式举个例子_南宁网站建设及推广_搜索引擎调价平台哪个好

2025/4/27 14:22:58 来源:https://blog.csdn.net/Villiam_AY/article/details/147365436  浏览:    关键词:bbs网站源码_网络营销方式举个例子_南宁网站建设及推广_搜索引擎调价平台哪个好
bbs网站源码_网络营销方式举个例子_南宁网站建设及推广_搜索引擎调价平台哪个好

http:无状态协议,是互联网中使用http使用http实现计算机和计算机之间的请求和响应

使用纯文本方式发送和接受协议数据,不需要借助专门工具进行分析就知道协议中的数据

服务器端的几个概念

  • Request:用户请求的信息,用来解析用户的请求信息,包括 post、get、cookie、url 等信息

  • Response:服务器需要反馈给客户端的信息

  • Conn:用户的每次请求链接

  • Handler:处理请求和生成返回信息的处理逻辑

http报文的组成

  • 请求行
  • 请求头
  • 请求体
  • 响应头
  • 响应体

多种请求方式:

  • GET:向服务器请求资源地址
  • POST:直接返回请求内容
  • HEAD:只要求响应头
  • PUT:创建资源
  • DELETE:删除资源
  • TRACE:返回请求本身
  • OPTIONS:返回服务器支持HTTP方法列表、
  • CONNECT:建立网络连接
  • PATCH :修改资源

软件模型

  • B/S结构,客户端浏览器/服务器,客户端是运行在浏览器中
  • C/S结构,客户端/服务器,客户端是独立的软件

HTTP POST 简易模型

在这里插入图片描述

go对HTTP的支持

在golang的net/http包中提供了HTTP客户端和服务端的实现

Handle Func()可以设置函数的请求路径

LIstenAndServer实现监听服务

单控制器

发给处理器(Handler)
在Golang的net/http包下有ServeMutx实现了Front设计模式的Front窗口,ServeMux负责接收请求并把请求分发给处理器(Handler)

http.ServeMux实现了Handler接口

多控制器

在实际开发中大部分情况是不应该只有一个控制器的,不同的诗求应该交给不同的处理单元.

在Golang中支持两种多处理方式

  • 多个处理器(Handler)

  • 多个处理函数(HandleFunc)

使用多处理器

  • 使用http.Handle把不同的URL绑定到不同的处理器
  • 在浏览器中输入http://localhost:8090/myhandler或http://ocalhost:8090/myother可以访问两个处理器
    方法.但是其他URI会出现404(资源未找到)页面
package mainimport "net/http"type MyHandler struct {
}
type MyHandle struct {
}func (m *MyHandle) ServeHTTP(w http.ResponseWriter, r *http.Request) {w.Write([]byte("MyHandle--第二个"))
}func (m *MyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {w.Write([]byte("MyHandler"))
}func main() {h := MyHandler{}h2 := MyHandle{}server := http.Server{Addr: "localhost:8090"}http.Handle("/first", &h)http.Handle("/second", &h2)server.ListenAndServe()
}

使用多处理函数

func first(w http.ResponseWriter, r *http.Request) {fmt.Fprintln(w, "多函数first")
}
func second(w http.ResponseWriter, r *http.Request) {fmt.Fprintln(w, "多函数second")
}func main() {server := http.Server{Addr: "localhost:8090"}http.HandleFunc("/first", first)http.HandleFunc("/second", second)server.ListenAndServe()
}

获取请求头

package mainimport ("fmt""net/http"
)func param(w http.ResponseWriter, r *http.Request) {h := r.Header //mapfmt.Fprintln(w, h)for _, n := range h["Accept-Language"] {fmt.Fprintln(w, n)}
}func main() {server := http.Server{Addr: ":8090"}http.HandleFunc("/param", param)server.ListenAndServe()
}

获取请求参数

可以一次性全部获取也可以按照名称获取

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com