首页 > 其他分享 >【Go语言】Gin框架

【Go语言】Gin框架

时间:2024-03-16 17:58:41浏览次数:17  
标签:username 框架 GET userid context gin Go Gin ginServer

1、导入包

import "github.com/gin-gonic/gin"

在浏览器中响应:

2、Restful Api

3、响应前端

//加载静态页面

ginServer.LoadHTMLGlob("templates/*")

//响应页面返回给前端

ginServer.Get( "index" , func( context *gin.Context)) {

        //context.JSON() //json数据

        context.HTML( http.StatusOK, "index.html" , gin.H){

        "msg" : "这是go后台传递来的数据"

}

}

//接受前端传递的参数

//url?userid = xxx &username = XXX

ginServer.GET( "/user/info" , func( context *gin.Context)){

        userid := context.Query( "userid" )

        username := context.Query( "username")

        context.JSON( http.StatusOK , gin.H){

        "userod" :  userid;

          "username" :  username,

        // /user/info/1/XXX

        ginServer.GET( "/user/info/:userid/:username"), func(context *gin.Context){

        userid := context.Param( "userid")

        username := context.Param( "username")

        context.JSON(http.StatusOK, gin.H){

                "userid": userid,

                "username": username,        

}

}

        //服务器端口

        ginServer.Run( ":8082")

}

}

4、路由

ginServer.GET("/test", func(context *gin.Context)){

        //重定向301

        context.Redirect( http.StatusMovedPermanently, "https://www.XXX.com")

})

//404 NoRoute

ginServer.NoRoute ( func(context *gin.Context )){

        context.HTML(http.StatusNotFound, "404.html", nil)

})

// 路由组 /user/add

userGroup := ginServer.Group("/user"){

        userGroup.GET("/add")

        userGroup.GET("/login")

        userGroup.GET("/logout")

}

orderGroup := ginServer.Group("/order"){

        orderGroup.GET(""/add)

        orderGroup.DELETE("/delete")

}

5、中间件

自定义一个拦截器

func myHandler() (gin.HandlerFunc){

        return func(context *gin.Context){

        // 在后续操作中,只要调用了这个中间件都可以拿到这里的参数

        context.Set( "usersession" , "userid-1")

        context.Next()  //放行

       //cotext.Abort()   //阻止

}

}

定义中间件-》注册-》调用

标签:username,框架,GET,userid,context,gin,Go,Gin,ginServer
From: https://blog.csdn.net/weixin_44828537/article/details/136750552

相关文章

  • CF56D Changing a String 题解
    双倍经验:P2758。令\(dp_{i,j}\)表示\(s\)前\(i\)个字符要变成\(t\)前\(j\)个字符所需的最少移动次数。答案即为\(dp_{\lverts\rvert,\lvertt\rvert}\)。显然有初始状态\(dp_{i,0}=dp_{0,i}=i\)。因为我们只可能从添、删、替三种操作转移而来,于是有转移方程:......
  • Ubuntu,centos安装nginx
    安装包:https://pan.baidu.com/s/1kVCEBcVnginx需要依赖openssl,pcre,zlib包,加上nginx包一共4个包,放在同一目录,依次执行命令:tarxzfnginx-1.12.2.tar.gztarxzfopenssl-fips-2.0.9.tar.gztarxzfpcre-8.41.tar.gztarxzfzlib-1.2.11.tar.gzcdopenssl-fips-2.0.9/./config......
  • MongoDB 重新同步复制集成员
    测试的复制集因为磁盘空间的问题,落后主节点太多,数据不同步:{"t":{"$date":"2024-02-19T16:13:06.387+08:00"},"s":"I","c":"REPL","id":21799,"ctx":"ReplCoordExtern-0","msg&......
  • python接口自动化测试 —— unittest框架suite、runner详细使用
    testsuite测试套件,理解成测试用例集一系列的测试用例,或测试套件,理解成测试用例的集合和测试套件的集合当运行测试套件时,则运行里面添加的所有测试用例testrunner测试运行器用于执行和输出结果的组件testsuite、testrunner基础使用单元测试类1#创建单元测试类......
  • java企业员工档案管理(ssm框架毕业设计)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义在现代企业管理中,员工档案管理是一个重要的组成部分。它不仅涉及到员工的个人信息,还包含了他们的工作经历、技能培训、绩效评估等重要内容。因此,如何有效地管理这......
  • java企业员工岗前培训管理系统(ssm框架毕业设计)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在当今激烈的市场竞争环境下,企业对员工的要求越来越高,员工的专业能力和综合素质直接影响到企业的生产力和竞争力。然而,新入职的员工往往需要一段时间来适......
  • 2024-03-16:用go语言,给你一个正整数数组 nums, 每一次操作中,你可以从 nums 中选择 任意
    2024-03-16:用go语言,给你一个正整数数组nums,每一次操作中,你可以从nums中选择任意一个数并将它减小到恰好一半。(注意,在后续操作中你可以对减半过的数继续执行操作)请你返回将nums数组和至少减少一半的最少操作数。输入:nums=[5,19,8,1]。输出:3。答案2024-03-16:......
  • Golang使用Socket.io
    什么是Socket.IO?Socket.io是建立在WebSocket之上的一个实时应用程序框架。它封装了WebSocket,并提供了更高级别的接口,包括实时事件处理、自动重新连接、多房间支持等功能。Socket.IO在客户端和服务器端分别有对应的库,简化了实时通信的开发。gopackagemainimport( "fm......
  • Nginx的安装和使用
    Nginx的安装和使用Nginx主要功能:反向代理、负载均衡、动静分离使用docker-compose安装cd/opt/docker_composemkdirdocker_nginxcddocker_nginxtouchdocker-compose.yml编写docker-compose.yml后保存version:'3.1'services:nginx:restart:always......
  • Nginx部署vue项目刷新返回空白页问题
    这个问题很有可能是因为VueRouter的模式和Nginx配置之间的冲突导致的。当你在Vue应用中使用VueRouter的`history`模式时,URL会变成美观的形式,就像`http://mywebsite/myroute`,而不是`http://mywebsite/#/myroute`。这种模式下,当你尝试通过直接访问`http://mywebsite......