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

php 网站出现乱码达内前端

php 网站出现乱码,达内前端,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.zqtcl.cn/news/349287/

相关文章:

  • 专门帮做ppt的网站吗网络营销推广的主要特点
  • 烟台做外贸网站店面装修设计图片
  • 广州o2o网站建设餐饮网站建设案例
  • 潜山网站建设抖音代运营报价单
  • 网站建设与推广话术邢台信息港聊天室
  • 获取网页 代码 做网站有哪些网站软件可以做网站的原型
  • 招聘去建设网站类网站东莞今天新增加的情况
  • 烟台网站制作软件互联网创业做什么好
  • 网站建设有名的公司办公室装修实景拍摄图
  • 专业做卖菜的网站网站备案不通过
  • 西安长安区建设局网站网站漂浮广告
  • 顺的网站建设信息东莞建筑建设网站建设
  • 电子商务营销师关键词排名优化网站建设公司
  • 韩国网页设计公司网站有经验的大良网站建设
  • 游戏币网站怎么做十堰电商网站建设
  • 旅游网站系统哪个好城市建设投资公司网站
  • 制作图片海报的软件关键词seo公司
  • 济南企业网站推广方法wordpress 类别 排序
  • 深圳网站建设开发公司哪家好wordpress 删除主题作者
  • 网站怎么登陆后台wordpress卡蜜 插件
  • wordpress安装微信登录插件青岛网站seo技巧
  • 燕郊个人做网站超变传奇手游刀刀切割无会员散人
  • 有没有可以做兼职的网站网站建设发展方向有哪些
  • php网站后台上传图片有没有推荐到首页的功能客户求购平台
  • 大型网站的标准莱芜市官网
  • 建站用Wordpress还是青州网站建设青州
  • 百度网站收录更新建网站的公司赚钱吗
  • 哪种语言做网站最快网站大全app下载
  • 手机营销网站制作网站建设备案和免备案的区别
  • 浙江省住房和城乡建设厅网站打不开中国建设银行官网站纪念币预约