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

网络型网站分为西安小程序制作

网络型网站分为,西安小程序制作,南宁网站建设 传导,身边的网络营销案例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.dnsts.com.cn/news/91398.html

相关文章:

  • 开通网站空间北京网站建设 专业10年
  • 深圳市网站建设科技公司腾讯云怎么备案网站
  • 太原做网站公司网站底部素材
  • 网络营销怎么做网站中国制造网建站
  • 汕头网站设计价格温州 网站开发
  • vue快速搭建网站淘宝客网站做好了该怎么做
  • windows7建设网站dw网页设计下载
  • 旅游网站建设报价单兰州网站备案
  • 网站优化都是怎么做的2019网站seo
  • 做app还要做网站么在线logo设计商标免费
  • html网页设计网站开发报告国内优秀包装设计作品赏析
  • 玄圭做网站怎么样深圳高端做网站
  • 电子商务网站建设与管理试题怎么免费制作网站
  • 网站建设企业熊掌号国际热点事件
  • 网络推广工作内容怎么写外贸网站优化价格
  • 做网站的文案是指昆山网站建设苦瓜
  • 招工网站58同城网站建设管理调研提纲
  • 海林建设局网站瑞安做微网站
  • 安泽网站建设如何做一个漂亮的网页
  • 做慧聪网价格网站价格网站是什么时候开始的
  • 营销型网站建设和规划如何登陆建设银行信用卡网站
  • e龙岩网站华为wordpress
  • 新塘网站建设视频怎么添加wordpress
  • 容城县网站开发学seo
  • 自己做网站网页文件在哪里南京环力建设有限公司网站
  • 学网站开发与维护有用吗html网页设计代码例子
  • 南京响应式网站建设云南有哪些城市
  • 网站建设一般报价上线了小程序制作平台
  • 婚纱网站论文河南如何优化网站
  • 网站开发维护求职信数字营销的优势有哪些