61396-Go语言程序设计项目化教程(微课版)7.1 初识Gin_第1页
61396-Go语言程序设计项目化教程(微课版)7.1 初识Gin_第2页
61396-Go语言程序设计项目化教程(微课版)7.1 初识Gin_第3页
61396-Go语言程序设计项目化教程(微课版)7.1 初识Gin_第4页
61396-Go语言程序设计项目化教程(微课版)7.1 初识Gin_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

初识GinHTTP基础知识Gin基础路由RESTfulAPI资源设计Gin参数处理01.03.02.04.目录01HTTP基础知识完整的上网流程HTTP协议请求/响应常见状态码Go原生net/http标准库1HTTP基础知识1、输入域名(例如:)2、返回域名对应的IP地址3、依据IP地址进行访问(发送HTTP请求包)4、Web服务器返回页面(发送HTTP响应包)5、客户机(浏览器)解释HTML文档,在屏幕渲染图形化结果完整的上网流程1.客户端连接到Web服务器,与Web服务器的端口建立一个TCP套接字连接2.客户端向Web服务器发送一个HTTP文本的请求报文3.Web服务器处理请求并返回HTTP响应4.释放TCP套接字连接5.客户端浏览器解析HTML文本内容HTTP协议的请求——响应1HTTP基础知识1HTTP基础知识状态码解释200OK客户端请求成功204NoContent请求处理成功,但没有任何资源可以返回给客户端400BadRequest请求报文有语法错误401Unauthorized未授权403Forbidden服务器拒绝服务404NotFound请求的资源不存在500InternalServerError服务器内部错误503ServerUnavailable服务器临时不能处理客户端请求1HTTP基础知识Go语言中内置了原生的net/http标准库,通过它我们可以快速搭建一个简单的Web服务器。funcmain(){http.HandleFunc("/",func)http.ListenAndServe(":port",nil)}http.HandleFunc()设置路由路径调用func()函数http.ListenAndServe()指定监听地址,启动一个HTTP服务端。语法packagemainimport( "fmt" "net/http")//服务端编写的业务逻辑处理程序funcmyHandler(whttp.ResponseWriter,r*http.Request){ fmt.Fprintln(w,"HelloGoWeb!")}funcmain(){ http.HandleFunc("/",myHandler) //在指定的地址进行监听,开启一个HTTP http.ListenAndServe(":8080",nil)}02RESTfulAPI资源设计RESTfulAPI作用RESTfulAPI资源动作设计2RESTfulAPI资源设计时间发展,需求增加转为HTML+JavaScript(Ajax)互联网初期:页面请求和并发量不高HTML+JSP(动态页面)能满足需求安卓、IOS、小程序等形式客户端层出不穷客户端和服务端就需要通过接口进行通信具有REST风格的API(接口)结构清晰、符合标准、易于理解、扩展方便是目前最流行的接口设计规范主题站点:/一种软件架构风格、设计风格不是标准,是提供了一组设计原则和约束条件主要用于客户端和服务器交互类的软件基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制REST(RepresentationalStateTransfer)RESTfulAPI2RESTfulAPI资源设计请求方法含义GET获取资源POST创建资源PUT更新资源PATCH更新资源属性DELETE删除资源HEAD获取资源元数据OPTIONS获取信息Gin框架支持RESTful风格的API,RESTfulAPI资源动作设计有以下内容:03Gin基础路由HTTP路由原生net/http与Gin对比gin.Default()HTTP路由HTTP请求/响应路由是用于决定在当前请求下,由哪一个句柄去接收和响应句柄可以是一个函数、过程或者方法,只要能够接收特定类型的请求并做出反应即可Go语言内置的net/http原生标准库DefaultServeMux()函数提供了基础的路由功能但在请求响应过程中,常常会伴随着一系列问题即:内置的http原生标准库无法满足Web服务的灵活多变性弥补了原生net/http的不足,并提供了动态路由基于httprouter实现了高性能和低内存消耗3Gin基础路由GinWeb框架3Gin基础路由原生net/http不足之处不能单独对请求方法注册特定的处理函数不支持路由变量参数无法自动校准路径性能不高扩展性不足支持精确匹配不需要关注URL结尾斜杠路径自动归一化与矫正高性能同时内存消耗较低低内存消耗Gin框架路由便利之处3Gin基础路由Gin初始化语法r:=gin.Default()r为基础路由赋值变量gin为导入的第三方模块语法目的:调用gin模块中的Default函数去创建路由packagemainimport( "/gin-gonic/gin" "net/http")//服务端编写的业务逻辑处理程序funcmyHandler(c*gin.Context){ c.String(http.StatusOK,"HelloGoWeb!")}funcmain(){ //创建基础路由,赋值变量r r:=gin.Default() //绑定路由规则,执行IndexHandler函数

r.GET("/",myHandler) //调用Run函数,监听8080端口

r.Run(":8080")}04Gin参数处理Path参数Query参数Form表单参数4Gin参数处理在Restful风格的API中,每一个网址代表一种资源,客户端(浏览器)通过访问不同的URL参数实现资源获取。r:=gin.Default()r.GET("/login/:username/*password",func(c*gin.Context){username:=c.Param("username")password:=c.Param("password")c.String(http.StatusOK,username+“WelcometoGin!")})GET是一种请求方式/login/:username/*password代表请求的路径username和password是URL路径参数(请求参数)URL路径参数值通过gin.Context的Param方法来获取,当获取不到时则会返回空字符串http.StatusOK代表HttpStatus状态码为200,表示服务器响应成功Path参数packagemainimport( "/gin-gonic/gin" "net/http")funcmain(){ //创建基础路由,赋值变量r r:=gin.Default() //使用Path参数

r.GET("/login/:username",func(c*gin.Context){ username:=c.Param("username") c.String(http.StatusOK,username+",WelcometoGin!") }) //调用Run函数,监听8080端口

r.Run(":8080")}4Gin参数处理4Gin参数处理Query是一个专门用于查询的参数类,其内封装了查询条件、分页、排序等诸多功能。Query参数是指一个请求后面所携带的参数。例如API?username=“Go"&password=“golang"中的“Go”和“golang”就是Query参数值。r.GET("/login",func(c*gin.Context){username:=c.DefaultQuery("username","Go语言")password:=c.Query("password")c.String(http.StatusOK,username+"WelcometoGin!")})DefaultQuery()函数在参数不存在时会返回默认值Query()函数查询的内容若不存在则会返回空串Query参数packagemainimport( "/gin-gonic/gin" "net/http")funcmain(){ //创建基础路由,赋值变量r r:=gin.Default() //使用Query参数

r.GET("/login",func(c*gin.Context){ username:=c.DefaultQuery("username","admin") password:=c.Query("password") c.String(http.StatusOK,username+",WelcometoGin!Yourpasswordis"+password) }) //调用Run函数,监听8080端口

r.Run(":8080")}4Gin参数处理4Gin参数处理除了通过URL查询参数提交数据到服务器外,常用的还有通过Form表单的方式Form表单相比URL查询参数,用户体验好,可以承载更多的数据,尤其是文件上传Form表单将用户输入的数据以GET或POST方式提交到服务器Gin获取表单参数通过PostForm()函数r.GET("/login",func(c*gin.Context){username:=c.DefaultPostForm("username","Go语言")password:=c.PostForm("password")c.String(http.StatusOK,username+"WelcometoGin!")})DefaultPostForm()函数在参数不存在时会返回默认值PostForm()函数在表单内容不存在时则会返回空字符串Form表单参数<!DOCTYPEhtml><htmllang="en"><head>

<metacharset="UTF-8">

<metaname="viewport"content="width=device-width,initial-scale=1.0">

<metahttp-equiv="X-UA-Compatible"content="ie=edge">

<title>Document</title></head><body>

<formaction=":8080/login"method="post"action="application/x-www-form-urlencoded">

用户名:<inputtype="text"name="username"placeholder="请输入你的用户名">

<br>

码:<inputtype="password"name="password"placeholder="请输入你的密码">

<br><inputtype="submit"value="提交">

</form></body></html>4Gin参数处理packagemainimport( "/gin-gonic/gin" "net/http")funcmain(){ //创建基础路由,赋值变量r r:=gin.Default() //使

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论