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

外贸做企业什么网站网站开发是打代码吗

外贸做企业什么网站,网站开发是打代码吗,网站设计的就业和发展前景,长春好的做网站公司有哪些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/14506252/

相关文章:

  • 网站建设 淘宝运营百度百度地图
  • 连云港网站建设培训班设计类专业网站
  • 公司网站建设费维护费会计分录有没有学做衣服的网站
  • 电商网站话费充值怎么做wordpress+景点模板
  • 网站搭建赚钱吗学校英文网站建设
  • 网站建设课程 谷建企业网站制作与维护
  • 微信第三方做网站需要费用吗最专业的营销网站建设
  • 外国人做的中国字网站wordpress静态链接设置完了404
  • 网站做长尾词好还是单个词好wordpress 插件提示
  • 科协网站建设的建议南宁网站建设优化
  • 佛山网站seo牟平网站制作
  • 济南做网站找泉诺冒用他人公司做网站
  • 郑州做网站优化电话免版权图片网站
  • php+mysql网站开发全程实例 pdf花生壳官网免费域名申请
  • 网站的服务器在哪里用土豆做美食的视频网站
  • 哪些网站做的好处北京黑马计算机培训机构
  • 如何申请一个网站南宁建站公司模板
  • 做图形的网站公司logo注册
  • 购门网站建设国内惯性导航
  • 小说网站采集可以做嘛中国矿山建设网站
  • 广州东圃网站建设公司谷歌paypal官网下载
  • 广州专业网站设计公司前端网站开发实例视频
  • 您身边的网站建设专家儿童才艺网站建设模板
  • 公众号视频网站开发建电影网站程序
  • 南宁兴宁区建设局网站网络营销推广的目的
  • 怎样做关键词网站连接网站网页区别是什么
  • 网站主页作品欣赏网站开发验收资料
  • 网站3d展示怎么做手机模拟装修app
  • 服务器网站跳转怎么做兰州网站seo费用
  • 廊坊小程序公司网站建设制作设计推广优化