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

网站开发是打代码吗品牌创建的六个步骤

网站开发是打代码吗,品牌创建的六个步骤,WordPress最好版本,明企科技网站建设系统Gin 是一个 Go (Golang) 编写的轻量级 web 框架#xff0c;运行速度非常快#xff0c;擅长 Api 接口的高并发#xff0c;如果项目的规模不大#xff0c;业务相对简单#xff0c;这个时候我们也推荐您使用 Gin#xff0c;特别适合微服务框架。 简单路由配置 package mai…Gin 是一个 Go (Golang) 编写的轻量级 web 框架运行速度非常快擅长 Api 接口的高并发如果项目的规模不大业务相对简单这个时候我们也推荐您使用 Gin特别适合微服务框架。 简单路由配置 package mainimport (github.com/gin-gonic/gin )func main() {// 创建一个默认的路由引擎r : gin.Default()// 配置路由r.GET(/, func(c *gin.Context) {aid : c.Query(aid)c.JSON(200, gin.H{username: name1,aid: aid,data: []string{hello, world},})})// 启动 HTTP 服务默认在 0.0.0.0:8080 启动服务r.Run() } 运行起来以后在浏览器输入http://127.0.0.1:8080/?aidxyz即可获取到 url 请求的结果 {aid:xyz,data:[hello,world],username:name1} 动态路由 package mainimport (github.com/gin-gonic/gin )func main() {r : gin.Default()r.GET(/user/:id, func(c *gin.Context) {id : c.Param(id)c.JSON(200, gin.H{username: name1,id: id,data: []string{hello, world},})})r.Run() }请求 urlhttp://127.0.0.1:8080/user/looking 请求 result {data:[hello,world],id:looking,username:name1} 结果响应 c.String() package mainimport (github.com/gin-gonic/gin )func main() {r : gin.Default()r.GET(/news, func(c *gin.Context) {c.String(200, Hello world)})r.Run() }c.JSON() 大部分时候我们直接返回 json 的数据格式要更多一些。数据返回我们可以使用 gin.H 的 map 形式也可以直接用 struct 的形式不过使用结构体的话记得要给字段标注好 json 对应的 tag。 package mainimport (github.com/gin-gonic/gin )func main() {r : gin.Default()r.GET(/structJson, func(c *gin.Context) {// 结构体方式var msg struct {Username string json:usernameMsg string json:msgAge string json:age}msg.Username name1msg.Msg msg1msg.Age 18c.JSON(200, msg)})r.Run() } c.JSONP() package mainimport (github.com/gin-gonic/ginnet/http )func main() {r : gin.Default()r.GET(/JSONP, func(c *gin.Context) {data : map[string]interface{}{foo: bar,}c.JSONP(http.StatusOK, data)})r.Run() }请求 urlhttp://127.0.0.1:8080/JSONP?callbackx 请求 result x({foo:bar}); c.HTML() index.html !DOCTYPE html html langen headmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/title /head body h1这是一个 html 模板/h1h3{{.title}}/h3 /body /html渲染之前先对文件进行 load 加载框架会自动将变量替换到 html 文件里进行渲染  package mainimport (github.com/gin-gonic/ginnet/http )func main() {r : gin.Default()r.LoadHTMLFiles(./templates/index.html)r.GET(/index, func(c *gin.Context) {c.HTML(http.StatusOK, index.html,map[string]interface{}{title: 前台首页})})r.Run() }http://127.0.0.1:8080/index 请求传值 get查询和动态路由前面已经有示例了我们看下其他类型的传值。 post获取表单数据 package mainimport (github.com/gin-gonic/gin )func main() {r : gin.Default()r.POST(/doAddUser, func(c *gin.Context) {username : c.PostForm(username)password : c.PostForm(password)age : c.DefaultPostForm(age, 20)c.JSON(200, gin.H{usernmae: username, password: password, age: age,})})r.Run() }post/get传值绑定到结构体 传值绑定结构体是我们正常开发时最常用的参数解析方式之一了 package mainimport (fmtgithub.com/gin-gonic/ginnet/http )type Userinfo struct {Username string form:username json:userPassword string form:password json:password }func main() {r : gin.Default()r.GET(/, func(c *gin.Context) {var userinfo Userinfoif err : c.ShouldBind(userinfo); err nil {fmt.Printf(userinfo: %v\n, userinfo) // userinfo: {Username:zhangsan Password:123456}c.JSON(http.StatusOK, userinfo)} else {c.JSON(http.StatusBadRequest, gin.H{error: err.Error()})}})r.Run() }http://127.0.0.1:8080/?usernamezhangsanpassword123456 {user:zhangsan,password:123456} 同理POST请求等也可以将请求参数绑定到结构体中 package mainimport (github.com/gin-gonic/ginnet/http )type Userinfo struct {Username string form:username json:userPassword string form:password json:password }func main() {r : gin.Default()r.POST(/doLogin, func(c *gin.Context) {var userinfo Userinfoif err : c.ShouldBind(userinfo); err nil {c.JSON(http.StatusOK, userinfo)} else {c.JSON(http.StatusBadRequest, gin.H{error: err.Error()})}})r.Run() }post获取xml数据 一般请求传递 xml 格式数据的遇到的不多不过也可以试试。 package mainimport (fmtgithub.com/gin-gonic/ginnet/http )type Article struct {Title string json:title xml:titleContent string json:content xml:content }func main() {r : gin.Default()r.POST(/xml, func(ctx *gin.Context) {var article Articleif err : ctx.ShouldBindXML(article); err nil {fmt.Printf(article: %v\n, article)ctx.JSON(http.StatusOK, article)}else {ctx.JSON(http.StatusBadRequest, gin.H {err: err.Error()})}})r.Run() }可以使用 Apifox 发送请求尝试可以直观看到接口返回的结果 路由分组 路由分组即将相关的路由加上相同的前缀用以和其他路由进行区分和辨别。 package mainimport (github.com/gin-gonic/gin )func ApiRouter(r *gin.Engine) {apiRouter : r.Group(/api){apiRouter.GET(/, func(ctx *gin.Context) {ctx.String(200, api)})apiRouter.GET(articles, func(ctx *gin.Context) {ctx.String(200, /api/articles)})} }func main() {r : gin.Default()ApiRouter(r)r.Run() } 路由分离 路由分离可以将不相关的路由解耦分离到单独的文件进行维护。 在项目新建文件夹router,然后在router目录下创建apiRouter.go 和adminRouter.go package router // apiRouter.go import github.com/gin-gonic/ginfunc ApiRouter(r *gin.Engine) {apiRouter : r.Group(/api){apiRouter.GET(/, func(ctx *gin.Context) {ctx.String(200, api)})apiRouter.GET(articles, func(ctx *gin.Context) {ctx.String(200, /api/articles)})} }package router// adminRouter.go import (net/httpgithub.com/gin-gonic/gin )func AdminRouter(r *gin.Engine) {adminRouter : r.Group(/admin){adminRouter.GET(/, func(ctx *gin.Context) {ctx.String(200, admin)})adminRouter.GET(list, func(ctx *gin.Context) {ctx.String(http.StatusOK, admin/list)})} }在main.go中引入路由模块并使用即可 package mainimport (github.com/gin-gonic/gingithub.com/test/router )func main() {// 创建一个默认的路由引擎r : gin.Default()// 引入路由模块router.AdminRouter(r)router.ApiRouter(r)// 启动 HTTP 服务默认在 0.0.0.0:8080 启动服务r.Run() }自定义控制器 当我们的项目比较大的时候有必要对我们的控制器进行分组 , 业务逻辑放在控制器中有的把业务逻辑处理部分称为 handler。 新建 controller/api/userController.go package apiimport github.com/gin-gonic/ginfunc UserIndex(c *gin.Context) {c.String(200, api UserIndex) }func UserAdd(c *gin.Context) {c.String(200, api UserAdd) }func UserList(c *gin.Context) {c.String(200, api UserList) } func UserUpdate(c *gin.Context) {c.String(200, api UserUpdate) }func UserDelete(c *gin.Context) {c.String(200, api UserDelete) }apiRouter.go package router // apiRouter.go import (github.com/gin-gonic/gingithub.com/test/controller/api )func ApiRouter(r *gin.Engine) {apiRouter : r.Group(/api){apiRouter.GET(/)apiRouter.GET(/users, api.UserIndex)apiRouter.GET(/users/:id, api.UserList)apiRouter.POST(/users, api.UserAdd)apiRouter.PUT(/users/:id, api.UserUpdate)apiRouter.DELETE(/users, api.UserDelete)} } 控制器继承 要让控制器可以继承最好将控制器做成方法的形式一般默认是函数的形式这样的话就可以根据结构体的匿名字段实现对继承结构体的方法进行很方便的调用。 baseController.go package apiimport github.com/gin-gonic/gintype BaseController struct { }func (con BaseController) Success(c *gin.Context) {c.String(200, success) }func (con BaseController) Error(c *gin.Context) {c.String(200, failed) }userController.go package apiimport github.com/gin-gonic/gintype UserController struct {BaseController }func (con UserController) UserIndex(c *gin.Context) {// c.String(200, api UserIndex)con.Success(c) }func (con UserController) UserAdd(c *gin.Context) {c.String(200, api UserAdd) }func (con UserController) UserList(c *gin.Context) {c.String(200, api UserList) } func (con UserController) UserUpdate(c *gin.Context) {c.String(200, api UserUpdate) }func (con UserController) UserDelete(c *gin.Context) {c.String(200, api UserDelete) }apiRouter.go package router // apiRouter.go import (github.com/gin-gonic/gingithub.com/test/controller/api )func ApiRouter(r *gin.Engine) {apiRouter : r.Group(/api){apiRouter.GET(/)apiRouter.GET(/index, api.UserController{}.UserIndex)apiRouter.GET(/users, api.UserController{}.UserList)apiRouter.GET(/users/:id, api.UserController{}.UserList)apiRouter.POST(/users, api.UserController{}.UserAdd)apiRouter.PUT(/users/:id, api.UserController{}.UserUpdate)apiRouter.DELETE(/users, api.UserController{}.UserDelete)} }To be continued
http://www.hkea.cn/news/14407143/

相关文章:

  • 网站的推广方法有哪些建设工程检测中心网站
  • 仪征建设银行官方网站阿里模板网站建设
  • node做网站后台如何写好网站建设方案
  • 怎么用ip访问vps网站广告公司加盟代理哪家好
  • 做心悦腾龙光环的网站宝安中心医院是三甲吗
  • 一站式做网站平台有免费开网店的吗
  • 如何建立商城网站三亚网站建设
  • 网站建设 自学易语言怎么把网站音乐做进去
  • 美食网站需求分析腾讯企点聊天记录在哪里
  • 大连龙采做网站行不行营销推广哪家好
  • 网站关键词优化代码腾讯qq官网登录入口
  • 电子手表网站谁告诉你j2ee是做网站的
  • 徐东网站建设公司中国遵义门户网站
  • 做网站电脑和手机都是一样可以看吗网站qq在线状态
  • 广东网站制作设计济南网站建设丨 首选搜点网络
  • 怎么做网站登录界面福建高端建设网站
  • amp网站建设合肥网站到首页排名
  • 中国做外贸的网站有哪些做商品网站数据库有哪些
  • 潍坊网站优化公司wordpress修改备案号
  • 帝国小说网站模板wordpress下载模板怎么用
  • 在车子男女做的视频网站权威数据统计网站
  • 网络推广网站套餐建设工程网站资质人员查询
  • 建电影网站赚钱挣钱吗互动网门户网站建设
  • 西安十大网站制作公司公众号开发运营方案
  • 中电建铁路建设公司网站厦门网站设计排行
  • 快速生成网站程序wordpress首页显示标签
  • 资源分享网站怎么做阿里巴巴国际站入口
  • 网站建设及维护服务器网站营销做的好的律师
  • 学网站建设 赚钱网站建设尺寸
  • 自助建站软件自动建站系统网站建设仟首先金手指14