Gin教程(4)—HTTP方法处理
HTTP方法类型
根据 HTTP 标准,HTTP 请求可以使用多种请求方法。
- HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。
- HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
方法 | 描述 |
---|---|
GET | 请求指定的页面信息,并返回实体主体。 |
HEAD | 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头 |
POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。 |
PUT | 从客户端向服务器传送的数据取代指定的文档的内容。 |
DELETE | 请求服务器删除指定的页面。 |
CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。 |
OPTIONS | 允许客户端查看服务器的性能。 |
TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
PATCH | 是对 PUT 方法的补充,用来对已知资源进行局部更新 。 |
MOVE | 请求服务器将指定的页面移至另一个网络地址。 |
COPY | 请求服务器将指定的页面拷贝至另一个网络地址。 |
LINK | 请求服务器建立链接关系。 |
UNLINK | 断开链接关系。 |
WRAPPED | 允许客户端发送经过封装的请求。 |
Extension-mothed | 在不改动协议的前提下,可增加另外的方法。 |
可能还有其他我没接触过的方法,欢迎大家补充哈😄!
Gin对于HTTP方法的支持
Gin v1.4.0版本默认只支持:GET, POST, PUT, PATCH, HEAD, OPTIONS, DELETE, CONNECT, TRACE 这几种方法,但是我们也可以通过RouterGroup.Handle()
函数自行拓展。
示例代码:
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main(){
webEng := gin.Default()
//普通方法
webEng.GET("/get", HandleGeneric)
webEng.POST("/post", HandleGeneric)
webEng.HEAD("/head",HandleGeneric)
//同时绑定所有支持的方法:GET, POST, PUT, PATCH, HEAD, OPTIONS, DELETE, CONNECT, TRACE.
webEng.Any("/",HandleAny)
//绑定自定义方法
webEng.Handle("ECHO","/", HandleAny)
webEng.Run(":8080")
}
func HandleGeneric(c *gin.Context){
c.String(http.StatusOK,"generic method: %s", c.Request.Method)
}
func HandleAny(c *gin.Context){
c.String(http.StatusOK,"method : %s", c.Request.Method)
}
说明:
- 对于:GET, POST, PUT, PATCH, HEAD, OPTIONS, DELETE,这7种HTTP方法,gin.RouterGroup提供了相应封装好的方法,可以直接使用。
- 如果希望某个路由支持所有的请求方法,或者请求方法不确定,可以使用RouterGroup.Any()函数绑定。
- 如果希望支持其他的HTTP方法,或是自定义的HTTP方法,需要使用RouterGroup.Handle()函数。
调试结果:
代码下载:https://github.com/IrvinYoung/gin-lessons
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 irvin.em@live.com。
文章标题:Gin教程(4)—HTTP方法处理
文章字数:696
本文作者:dino
发布时间:2019-11-19, 15:49:53
最后更新:2019-11-19, 16:23:39
原始链接:https://blog.walkbc.com/2019/11/19/gin-lesson-httpMothed/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。
QQ交流群:273078549