zoukankan      html  css  js  c++  java
  • Gin-Go学习笔记六:Gin-Web框架 Api的编写

    Api编写

    1>     Gin框架的Api返回的数据格式有json,xml,yaml这三种格式。其中yaml这种格式是一种特殊的数据格式。(本人暂时没有实现获取节点值得操作)

    2>     在apis文件夹下,新建一个data.go文件,作为获取api数据的业务逻辑代码.具体代码如下:

       

    package apis
    
    import (
      "net/http"
      "github.com/gin-gonic/gin"
     . "GinLearn/GinLearn/models"
    )
    //Api调用的页面
    func GetApiHtml(c *gin.Context){
    	c.HTML(http.StatusOK,"api.html",gin.H{
    		"title":"Go-Gin Api调用页面",
    	})
    }
    //Json格式的数据
    func GetJsonData(c *gin.Context) {  
      //得到请求的参数
      search:=c.PostForm("search")
      //得到用户的数据
      datalist:=GetPersonList(1,10,search)
      //得到记录的总数
      count:=GetRecordNum(search)
     //返回结果
     c.JSON(http.StatusOK, gin.H{
      "datalist": datalist,
      "count":count,
      "pagesize":3,
      "pageno":1,
     })
    }
    
    //Xml格式的数据
    func GetXmlData(c *gin.Context) {  
    	//得到请求的参数
    	search:=c.PostForm("search")
    	//得到用户的数据
    	datalist:=GetPersonList(1,10,search)
    	//得到记录的总数
    	count:=GetRecordNum(search)
       //返回结果
       c.XML(http.StatusOK, gin.H{
    	"datalist": datalist,
    	"count":count,
    	"pagesize":3,
    	"pageno":1,
       })
    }
    
    //Xml格式的数据
    func GetYamlData(c *gin.Context) {  
    	//得到请求的参数
    	search:=c.PostForm("search")
    	//得到用户的数据
    	datalist:=GetPersonList(1,10,search)
    	//得到记录的总数
    	count:=GetRecordNum(search)
       //返回结果
       c.YAML(http.StatusOK, gin.H{
    	"datalist": datalist,
    	"count":count,
    	"pagesize":3,
    	"pageno":1,
       })
      }
    
      //Json格式的数据
    func GetParamsJsonData(c *gin.Context) {  
    	//得到请求的参数
    	search:=c.PostForm("search")
    	//得到用户的数据
    	datalist:=GetPersonList(1,10,search)
    	//得到记录的总数
    	count:=GetRecordNum(search)
       //返回结果
       c.JSON(http.StatusOK, gin.H{
    	"datalist": datalist,
    	"count":count,
    	"pagesize":3,
    	"pageno":1,
    	"search":search,
       })
      }
    

      

    3>     在views文件夹下新建一个api.html页面作为测试获取api数据的展示页面.具体代码如下:

       

    <!DOCTYPE html>
     
    <html>
          <head>
            <title>{{.title}}</title>
            <link rel="shortcut icon" href="/static/img/favicon.png" /> 
            <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.css"/>
            <script type="text/javascript" src="/static/js/jquery-2.1.1.min.js"></script> 
            <script type="text/javascript" src="/static/bootstrap/js/bootstrap.min.js"></script> 
          </head>       
        <body>
           <div class="container">
            <!--请求得到字典数据--> 
            <div style="100%;height:50px;">
                <input type="text" id="search" placeholder="请输入参数"/>
                <button onclick="getparams()" class="btn btn-primary">得到参数</button>
                <label id="txtparams"></label>
            </div>
            <!--请求得到Json数据--> 
            <div style="100%;height:50px;">
              <button onclick="getjson()" class="btn btn-primary">得到Json</button>
              <label id="txtjson"></label>
            </div>
            <!--请求得到Xml数据--> 
            <div style="100%;height:50px;">
                <button onclick="getxml()" class="btn btn-primary">得到Xml</button>
                <label id="txtxml"></label>
            </div>
            <!--请求得到Yaml数据--> 
            <div style="100%;height:50px;">
              <button onclick="getYaml()" class="btn btn-primary">得到Yaml</button>
              <label id="txtyaml"></label>
            </div>       
           </div>
           
            <!--JS部分-->
            <script type="text/javascript">
             //得到参数
             function getparams(){
                $.ajax({
                   type:'get',
                   url:'/api/paramsdata',//此处的是json数据的格式
                   data:{
                    search:$("#search").val()
                   },
                   success:function(result){
                       console.log('获取参数的数据')
                       console.log(result)
                      $("#txtparams").html("记录总数:"+result.count
                       +",记录I:"+result.datalist[0].first_name+result.datalist[0].last_name+",记录II:"
                       +result.datalist[1].first_name+result.datalist[1].last_name+"...");
                   } 
                })
              }
              //得到Json
              function getjson(){
                $.ajax({
                   type:'get',
                   url:'/api/jsondata',
                   dataType:'json',//此处的是json数据的格式
                   data:{
                     search:$("#search").val()
                   },
                   success:function(result){
                       console.log('获取json的数据')
                       console.log(result)
                       $("#txtjson").html("json的结果:"+result.count
                       +",记录1:"+result.datalist[0].first_name+result.datalist[0].last_name+",记录2:"
                       +result.datalist[1].first_name+result.datalist[1].last_name+"...");
                   } 
                })
              }
              //得到Xml
              function getxml(){
                $.ajax({
                   type:'get',
                   url:'/api/xmldata',
                   dataType:'xml',//此处的是xml数据的格式
                   data:{
                     search:$("#search").val()
                   },
                   success:function(result){
                       console.log('获取xml的数据')
                       console.log(result)
                       
                     $("#txtxml").html("xml的结果:"+$(result).text());
                   } 
                })
              }
               //得到yaml
               function getYaml(){
                $.ajax({
                   type:'get',
                   url:'/api/yamldata', 
                   data:{
                    search:$("#search").val()
                   },
                   success:function(result){
                       console.log('获取yaml的数据')
                       console.log(result)
                      $("#txtyaml").html("yaml的结果:"+result);
                   } 
                })
              }
             
            </script>
        </body>
    </html>
    

      

    4>     在路由器文件router.go中添加api部分的路由。具体代码如下:

        

    package routers
    
    import (
      "github.com/gin-gonic/gin"
      . "GinLearn/GinLearn/apis" //api部分
      . "GinLearn/GinLearn/controllers" //constroller部分
     )
     
    func InitRouter() *gin.Engine{
      router := gin.Default()
      //Hello World
      router.GET("/", IndexApi)
      //渲染html页面
      router.LoadHTMLGlob("views/*")
      router.GET("/home/index", ShowHtmlPage)
      //列表页面
      router.GET("/home/list", ListHtml)
      router.POST("/home/PageData", GetDataList)
      router.POST("/home/PageNextData", PageNextData)
    
      //新增页面
      router.GET("/home/add", AddHtml)
      router.POST("/home/saveadd", AddPersonApi)
      
       //编辑页面
       router.GET("/home/edit", EditHtml)
       router.POST("/home/saveedit", EditPersonApi)
    
        //删除
        router.POST("/home/delete", DeletePersonApi)
    
        //Bootstrap布局页面
        router.GET("/home/bootstrap", Bootstraphtml)
    
        //文件的上传和下载 
        router.GET("/home/fileopt", Fileopthtml)
        router.POST("/home/fileuplaod", Fileupload)
        router.GET("/home/filedown", Filedown)
    
        //文件的创建删除和读写
        router.GET("/home/filerw", Filerwhtml)
        router.POST("/home/addfile", FilerCreate)//创建文件
        router.POST("/home/writefile", FilerWrite)//写入文件
        router.POST("/home/readfile", FilerRead)//读取文件
        router.POST("/home/deletefile", FilerDelete)//删除文件
        
        //api调用的部分
        router.GET("/home/api", GetApiHtml) 
        router.GET("/api/jsondata", GetJsonData) 
        router.GET("/api/xmldata", GetXmlData) 
        router.GET("/api/yamldata", GetYamlData) 
        router.GET("/api/paramsdata", GetParamsJsonData) 
        return router
     }
     
    

      

    5>     编译测试,具体效果如下:

     

    6>     下一章讲布局页面

  • 相关阅读:
    python-进阶-优雅的python写法
    springMVC3学习(十一)--文件上传CommonsMultipartFile
    springMVC3学习(十)--注解式控制器
    CSS3/jQuery自定义弹出窗口
    window.open()详解及浏览器兼容性问题
    空格&nbsp在不同浏览器中显示距离不一致问题解决方法
    jQuery拖动调整表格列宽度-resizableColumns
    jQuery表格排序组件-tablesorter
    springMVC3学习(九)--redirect和forward跳转
    springMVC3学习(八)--全局的异常处理
  • 原文地址:https://www.cnblogs.com/tudaogaoyang/p/8080358.html
Copyright © 2011-2022 走看看