当前位置: 首页 > news >正文

微网站的优势app手机网站开发

微网站的优势,app手机网站开发,网站用html做的怎么弄后台,网络运维课程1. 什么是Gin框架 Gin框架#xff1a;是一个由 Golang 语言开发的 web 框架#xff0c;能够极大提高开发 web 应用的效率#xff01; 1.1 什么是web框架 web框架体系图#xff08;前后端不分离#xff09;如下图所示#xff1a; 从上图中我们可以发现一个Web框架最重要…1. 什么是Gin框架 Gin框架是一个由 Golang 语言开发的 web 框架能够极大提高开发 web 应用的效率 1.1 什么是web框架 web框架体系图前后端不分离如下图所示 从上图中我们可以发现一个Web框架最重要的一些组成部分 HTTP解析/封装系统解析HTTP请求以及将响应构造为HTTP请求等任务交由web框架来完成路由系统将一个请求路由给某一个指定的处理器函数逻辑处理系统是后端人员需要关注的重点区域编写具体业务逻辑以及链接数据库模板引擎前后端不分离将数据嵌入到HTML模板中构建动态页面 简单来说web框架将一些繁琐且与业务逻辑无关的部分封装起来供开发者使用这样开发人员只需要关注业务逻辑层的实现 1.2 web框架两种架构模式 常见的 web 架构模式有两种 前后端不分离前后端分离 上面已经介绍了前后端不分离的架构体系图下图是前后端分离的架构图 可以看出主要区别在于后端没有了模板引擎意味着HTML页面、图片等static静态资源全部都在前端服务器部署如nginx后端服务器只负责编写接口进行业务逻辑处理然后将前端所需的数据暴露成接口返回不和页面打任何交道 2. Gin框架 2.1 Gin框架如何安装 在Go 1.11之后引入了包管理机制我们就可以使用go mod tidy一键将代码中所需导入的包从远程服务器下载到本地 package mainimport github.com/gin-gonic/ginfunc main() {// 获取引擎对象r : gin.Default()// 设置路由r.GET(/hello, func(c *gin.Context) {c.String(200, Hello Gin)})// 启动r.Run(:8080) }编写完上述代码以后在控制台输入以下命令 go mod init gin_first包管理初始化go mod tidy下载所需依赖 看到上述信息就表明 gin 框架已经引入完毕可以正式编写代码啦~ 2.2 Gin框架的路由系统 2.2.1 基本使用 其实在 2.1 节我们已经初步使用过路由系统了 // 设置路由 r.GET(/hello, func(c *gin.Context) {c.String(200, hello gin) })基本语法r.操作方法(url, 处理器函数) 操作方法引擎对象基本支持所有的HTTP请求方法比如GET、POST、PUT、PATCH、DELETE、HEAD、OPTIONS以及Any任何请求、NoRoute(没有请求对应上时访问)url表示请求对应的路径处理器函数表示请求路径为/hello时映射到该处理器函数进行执行 现在我们通过浏览器使用GET请求访问路径http://localhost:8080/hello 2.2.2 路由分组 有时候我们希望对一个 url 路径做更统一化的管理比如/user/login和/user/register实际上都是在/user路径下的子路由这个时候就需要引入 路由分组 基本语法子路由对象 : r.Group(根路由) package mainimport github.com/gin-gonic/ginfunc main() {// 获取引擎对象r : gin.Default()// 设置根路由userRouter : r.Group(/user){userRouter.GET(/login, func(ctx *gin.Context) {ctx.String(200, /user/login)})userRouter.GET(/register, func(ctx *gin.Context) {ctx.String(200, /user/register)})}// 启动r.Run(:8080) }2.3 Gin框架获取参数 2.3.1 获取基本信息 2.3.1.1 获取请求方法 比如在Any请求内部想要知道具体请求方法可以使用 基本语法var method string ctx.Request.Method package mainimport (fmtgithub.com/gin-gonic/gin )func handleFunc(ctx *gin.Context) {// 获取请求方法method : ctx.Request.Methodfmt.Println(请求方法是: method)ctx.String(200, request ok) }func main() {// 获取引擎对象r : gin.Default()// 设置路由r.Any(/method, handleFunc)// 启动r.Run(:8080) } 代码运行结果 2.3.1.2 获取请求URL 基本语法var url string ctx.Request.URL package mainimport (fmtgithub.com/gin-gonic/gin )func handleFunc(ctx *gin.Context) {// 获取请求URLvar url string ctx.Request.URL.String()fmt.Println(请求URL是: url)ctx.String(200, request ok) }func main() {// 获取引擎对象r : gin.Default()// 设置路由r.GET(/url, handleFunc)// 启动r.Run(:8080) } 代码运行结果 2.3.1.3 获取远程IP地址 基本语法 方式一var remoteAddr string ctx.Request.RemoteAddr包含端口方式二var remoteAddr string ctx.ClientIP()不包含端口 package mainimport (fmtgithub.com/gin-gonic/gin )func handleFunc1(ctx *gin.Context) {// 获取远程ipvar addr string ctx.Request.RemoteAddrfmt.Println(远程ip:, addr)ctx.String(200, request ok) }func handleFunc2(ctx *gin.Context) {// 获取远程ipvar addr string ctx.ClientIP()fmt.Println(远程ip:, addr)ctx.String(200, request ok) }func main() {// 获取引擎对象r : gin.Default()// 设置路由r.GET(/addr1, handleFunc1)r.GET(/addr2, handleFunc2)// 启动r.Run(:8080) } 代码运行结果 2.3.1.4 获取请求头信息 本语法var headerInfo string ctx.GetHeader(键) package mainimport (fmtgithub.com/gin-gonic/gin )func handleFunc(ctx *gin.Context) {// 获取指定请求头var userAgent string ctx.GetHeader(User-Agent)fmt.Println(Content-Type:, userAgent)ctx.String(200, request ok) }func main() {// 获取引擎对象r : gin.Default()// 设置路由r.GET(/header, handleFunc)// 启动r.Run(:8080) } 代码运行结果 2.3.2 获取请求数据 2.3.2.1 获取查询字符串内容 通常来说使用 GET 请求发送请求都会将数据放置在查询字符串位置 方式一 var content string ctx.Query(键)方式二var content string ctx.DefaultQuery(键, 缺省值)如果不存在则使用默认值填充方式三value, ok : ctx.GetQuery(键)可以通过ok判断是否存在键 package mainimport (fmtgithub.com/gin-gonic/gin )func handleFunc1(ctx *gin.Context) {// 获取查询字符串数据var username ctx.Query(username)var pwd ctx.Query(pwd)fmt.Println(username:, username)fmt.Println(pwd:, pwd)ctx.String(200, request ok) }func handleFunc2(ctx *gin.Context) {// 获取查询字符串数据var user ctx.DefaultQuery(user, wjj)fmt.Println(user:, user)ctx.String(200, request ok) }func handleFunc3(ctx *gin.Context) {// 获取查询字符串数据user, exists : ctx.GetQuery(user)if exists {fmt.Println(键存在值为:, user)} else {fmt.Println(键不存在!)}ctx.String(200, request ok) }func main() {// 获取引擎对象r : gin.Default()// 设置路由r.GET(/queryString1, handleFunc1)r.GET(/queryString2, handleFunc2)r.GET(/queryString3, handleFunc3)// 启动r.Run(:8080) } 程序运行结果 2.3.2.2 获取表单数据 前端使用 form表单 提交发送请求此时Content-Type为x-www-form-urlencoded可以使用PostForm获取表单内容 方式一 var content string ctx.PostForm(键)方式二var content string ctx.DefaultPostForm(键, 缺省值)如果不存在则使用默认值填充方式三value, ok : ctx.GetPostForm(键)可以通过ok判断是否存在键 package mainimport (fmtgithub.com/gin-gonic/gin )func handleFunc1(ctx *gin.Context) {// 获取查询字符串数据var username ctx.PostForm(username)var pwd ctx.PostForm(pwd)fmt.Println(username:, username)fmt.Println(pwd:, pwd)ctx.String(200, request ok) }func handleFunc2(ctx *gin.Context) {// 获取查询字符串数据var user ctx.DefaultPostForm(user, wjj)fmt.Println(user:, user)ctx.String(200, request ok) }func handleFunc3(ctx *gin.Context) {// 获取查询字符串数据user, exists : ctx.GetPostForm(user)if exists {fmt.Println(键存在值为:, user)} else {fmt.Println(键不存在!)}ctx.String(200, request ok) }func main() {// 获取引擎对象r : gin.Default()// 加载HTML资源r.LoadHTMLGlob(templates/*)// 设置路由r.GET(/, func(ctx *gin.Context) {ctx.HTML(200, index.html, nil)})r.POST(/postform1, handleFunc1)r.POST(/postform2, handleFunc2)r.POST(/postform3, handleFunc3)// 启动r.Run(:8080) } 程序运行结果 2.3.2.3 获取JSON请求体数据 Go语言没有提供类似于 PostForm、Query 这样的API直接获取JSON数据但是Go提供了ShouldBind函数可以将 json 类型的数据自动映射到指定的结构体对象上 语法格式ctx.ShouldBind(结构体对象) package mainimport (fmtgithub.com/gin-gonic/gin )type Student struct {Username string json:usernamePassword string json:password }func main() {// 获取引擎对象r : gin.Default()// 设置路由r.POST(/, func(ctx *gin.Context) {// 使用ShouldBind函数获取JSON数据var student Studenterr : ctx.ShouldBind(student)if err ! nil {fmt.Println(err)ctx.String(500, 解析错误)} else {fmt.Println(student)ctx.String(200, request ok)}})// 启动r.Run(:8080) } 程序运行结果 2.4 Gin框架返回响应 2.4.1 返回HTML页面 语法格式ctx.HTML(响应状态码, 页面, 数据对象) 响应状态码对应的HTTP状态码页面具体页面路径数据对象与模板引擎相关后续章节介绍 package mainimport github.com/gin-gonic/ginfunc main() {// 获取引擎对象r : gin.Default()// 加载模板文件r.LoadHTMLGlob(templates/*)// 设置路由r.GET(/, func(ctx *gin.Context) {// 返回首页ctx.HTML(202, index.html, nil)})// 启动r.Run(:8080) } 程序运行结果 2.4.2 返回String类型 语法格式ctx.String(响应状态码, 格式化字符串) 响应状态码对应的HTTP状态码格式化字符串具体返回的文本内容 package mainimport github.com/gin-gonic/ginfunc main() {// 获取引擎对象r : gin.Default()// 设置路由r.GET(/, func(ctx *gin.Context) {// 返回sring类型ctx.String(200, string 类型)})// 启动r.Run(:8080) } 程序运行结果 2.4.3 返回JSON类型 语法格式ctx.JSON(响应状态码, gin.H对象) 响应状态码对应的HTTP状态码gin.H对象具体返回JSON格式对象 package mainimport github.com/gin-gonic/ginfunc main() {// 获取引擎对象r : gin.Default()// 设置路由r.GET(/, func(ctx *gin.Context) {// 返回json类型ctx.JSON(200, gin.H{name: wjj,age: 21,})})// 启动r.Run(:8080) } 程序运行结果 2.4.4 返回XML类型 语法格式ctx.XML(响应状态码, gin.H对象) 响应状态码对应的HTTP状态码gin.H对象具体返回XML格式对象 package mainimport github.com/gin-gonic/ginfunc main() {// 获取引擎对象r : gin.Default()// 设置路由r.GET(/, func(ctx *gin.Context) {ctx.XML(200, gin.H{name: wjj,age: 21,})})// 启动r.Run(:8080) } 程序运行结果
http://www.hkea.cn/news/14368152/

相关文章:

  • 选择网站建设公司logo素材
  • 广州可以做票务商城的网站公司wordpress文章中标签
  • 网站开发专业实习报告预约挂号php网站ftp急着后台密码忘记了
  • 章丘做网站的公司静安网站开发
  • 做网站需要哪类商标wordpress 获取文章图片
  • 如何搭建高品质网站北滘网站开发
  • 台州seo网站推广费用家具网站开发报告
  • 网站建设 管理规范比较还做的调查网站
  • 做网站的基础架构六安网站优化
  • 做外文H网站秦皇岛抖音推广公司
  • 烟台网站制作策划网站流量好难做
  • shopex网站wordpress登陆不跳转
  • 网站开发规划做前端网站用什么软件写代码
  • 电商网站建设信息网站 邮箱功能 设置
  • 做网站找哪家公司最好wordpress island主题
  • 公司域名网站网站的积分系统怎么做的
  • 网站整体地图怎么做网站搜索排名和什么有关系
  • 做网站 用 云主机做网站那个语言好
  • 成都网站改版《网站平台建设》课程实训
  • 本地扬中网站建设中国公司100强排名
  • 镇江房地产网站建设团购网站营销方案
  • 美丽女性网-大型女性门户网大型程序700m网站程序源码织梦潍坊企业网站制作
  • 纯php网站开发的网站郴州公司网站建设
  • 东莞网站维护WordPress建站经验
  • wordpress jetpack插件天津做网站优化价格
  • 石碣网站建设网页前端开发技术
  • 郑州网站建设开发公司网站上的公告怎么做参考文献
  • 新网个人网站备案福利公众号
  • 定制柜设计网站视频拍摄报价单
  • 怎么做网站内部链接上海优化外包公司