Api编写

1>     api常用的数据的格式有json和xml这两种。

2>     下面开始讲解不同的数据格式使用的方式

1->JSON 数据直接输出.

调用 ServeJSON 之后,会设置 content-type 为 application/json,然后同时把数据进行 JSON 序列化输出

2->XML 数据直接输出

调用 ServeXML 之后,会设置 content-type 为 application/xml,同时数据会进行 XML 序列化输出

3->jsonp 调用

调用 ServeJSONP 之后,会设置 content-type 为 application/javascript,然后同时把数据进行 JSON 序列化,然后根据请求的 callback 参数设置 jsonp 输出。

4->字典表格式的数据

以键值对的形式

3>     新建一个api.go的控制器,编写业务逻辑。具体代码如下:

package controllers

import (
"github.com/astaxie/beego"
)
//Api页面
type ApiController struct {
beego.Controller
} func (c *ApiController) Get() {
c.TplName="api.html"
}
//JSON格式的数据
type ApiJsonController struct {
beego.Controller
} func (c *ApiJsonController) Get() {
//注意此处的json,必须是json
c.Data["json"] = "ABCDEFG"
c.ServeJSON()
} //XML格式的数据
type ApiXMLController struct {
beego.Controller
} func (c *ApiXMLController) Get() {
//注意此处的xml,必须是xml
c.Data["xml"] = "BCDEFGH"
c.ServeXML()
} //Jsonp格式的数据
type ApiJsonpController struct {
beego.Controller
} func (c *ApiJsonpController) Get() {
//注意此处的jsonp,必须是jsonp
c.Data["jsonp"] = "CDEFGHI"
c.ServeJSONP()
} //字典表格式的数据
type ApiDictionaryController struct {
beego.Controller
} func (c *ApiDictionaryController) Get() {
c.Data["json"]=map[string]interface{}{"name":"ABC123","rows":45,"flag":true};
c.ServeJSON()
} //带参数的表格式的数据
type ApiParamsController struct {
beego.Controller
} func (c *ApiParamsController) Get() {
search:=c.GetString("name")
c.Data["json"]=map[string]interface{}{"name":search,"rows":45,"flag":false};
c.ServeJSON()
}

  

4>     新建一个api.html页面,作为测试页面使用

<!DOCTYPE html>
 
<html>
      <head>
        <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">
<!--请求得到Json数据-->
<div style="width:100%;height:50px;">
<button onclick="getjson()" class="btn btn-primary">得到Json</button>
<label id="txtjson"></label>
</div>
<!--请求得到Xml数据-->
<div style="width:100%;height:50px;">
<button onclick="getxml()" class="btn btn-primary">得到Xml</button>
<label id="txtxml"></label>
</div>
<!--请求得到Jsonp数据-->
<div style="width:100%;height:50px;">
<button onclick="getjsonp()" class="btn btn-primary">得到Jsonp</button>
<label id="txtjsonp"></label>
</div>
<!--请求得到字典数据-->
<div style="width:100%;height:50px;">
<button onclick="getdictionary()" class="btn btn-primary">得到字典</button>
<label id="txtdictionary"></label>
</div> <!--请求得到字典数据-->
<div style="width:100%;height:50px;">
<input type="text" id="search" placeholder="请输入参数"/>
<button onclick="getparams()" class="btn btn-primary">得到参数</button>
<label id="txtparams"></label>
</div>
</div> <!--JS部分-->
<script type="text/javascript"> //得到Json
function getjson(){
$.ajax({
type:'get',
url:'/api/GetJson',
dataType:'json',//此处的是json数据的格式
data:{},
success:function(result){
console.log('获取json的数据')
console.log(result)
$("#txtjson").html("json的结果:"+result);
}
})
}
//得到Xml
function getxml(){
$.ajax({
type:'get',
url:'/api/GetXml',
dataType:'xml',//此处的是xml数据的格式
data:{},
success:function(result){
console.log('获取xml的数据')
console.log(result) $("#txtxml").html("xml的结果:"+$(result).text());
}
})
}
//得到jsonp
function getjsonp(){
$.ajax({
type:'get',
url:'/api/GetJsonp',
dataType:'jsonp',//此处的是jsonp数据的格式
data:{},
success:function(result){
console.log('获取jsonp的数据')
console.log(result)
$("#txtjsonp").html("jsonp的结果:"+result);
}
})
}
//得到字典
function getdictionary(){
$.ajax({
type:'get',
url:'/api/GetDictionary',//此处的是json数据的格式
data:{},
success:function(result){
console.log('获取字典的数据')
console.log(result)
$("#txtdictionary").html("字典的结果:"+result.name+","+result.rows+","+result.flag);
}
})
}
//得到参数
function getparams(){
$.ajax({
type:'get',
url:'/api/GetParams',//此处的是json数据的格式
data:{
"name":$("#search").val()
},
success:function(result){
console.log('获取参数的数据')
console.log(result.json)
$("#txtparams").html("获取参数结果:"+result.name+","+result.rows+","+result.flag);
}
})
}
</script>
    </body>
</html>

  

5>     在路由器中添加路由,编译运行,修订错误

package routers

import (
"secondweb/controllers"
"github.com/astaxie/beego"
) func init() {
beego.Router("/", &controllers.MainController{})
beego.Router("/Home/PageData", &controllers.UserController{})
beego.Router("/Home/PageNextData", &controllers.YonghuController{})
beego.Router("/Home/Index", &controllers.PageController{})
beego.Router("/Home/EasyUI", &controllers.EasyUIController{})
beego.Router("/Home/EasyUIData", &controllers.EasyUIDataController{})
beego.Router("/Home/FileOpt", &controllers.FileOptUploadController{})
beego.Router("/Home/FileDown", &controllers.FileOptDownloadController{})
beego.Router("/Home/FileRead", &controllers.ReadController{})
beego.Router("/Home/FileWrite", &controllers.WriteController{})
beego.Router("/Home/FileCreate", &controllers.CreateController{})
beego.Router("/Home/FileDelete", &controllers.DeleteController{})
//Api接口部分
beego.Router("/api/Html", &controllers.ApiController{})
beego.Router("/api/GetJson", &controllers.ApiJsonController{})
beego.Router("/api/GetXml", &controllers.ApiXMLController{})
beego.Router("/api/GetJsonp", &controllers.ApiJsonpController{})
beego.Router("/api/GetDictionary", &controllers.ApiDictionaryController{})
beego.Router("/api/GetParams", &controllers.ApiParamsController{})
}

  

6>     运行效果

1->运行的页面如下:

2->调用json的接口,得到json格式的数据

3->请求得到xml格式的数据,得到xml格式的数据

4->请求jsonp格式的数据,得到jsonp格式的数据

5->请求得到字典表格式的数据,得到键值对形式的数据

6->请求参数的数据,将参数以及其他的数据返回

7>     下一章讲session的运用

Beego 学习笔记13:Api编写的更多相关文章

  1. Beego学习笔记

    Beego学习笔记 Go 路由(Controller) 路由就是根据用户的请求找到需要执行的函数或者controller. Get /v1/shop/nike ShopController Get D ...

  2. Beego 学习笔记14:Session控制

    Session控制 1>     Session常用来作为全局变量使用,比如记录当前登录的用户,或者页面之间传递数据使用. 2>     Beego框架内置了 session 模块,目前 ...

  3. Beego学习笔记——开始

    beego简介 beego是一个快速开发Go应用的http框架,他可以用来快速开发API.Web.后端服务等各种应用,是一个RESTFul的框架,主要设计灵感来源于tornado.sinatra.fl ...

  4. Java学习笔记之---API的应用

    Java学习笔记之---API的应用 (一)Object类 java.lang.Object 类 Object 是类层次结构的根类.每个类都使用 Object 作为超类.所有对象(包括数组)都实现这个 ...

  5. Beego 学习笔记15:布局页面

    页面布局 1>     一个html页面由:head部分,body部分,内部css,内部js,外联css,外联的js这几部分组成.因此,一个布局文件也就需要针对这些进行拆分. 2>     ...

  6. Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法

    Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法 这篇笔记将介绍如何使用Ext.Net GridPanel 中使用Sorter. 默认情况下,Ext.Net GridP ...

  7. Beego学习笔记——Logs

    日志处理 这是一个用来处理日志的库,它的设计思路来自于database/sql,目前支持的引擎有file.console.net.smtp,可以通过如下方式进行安装: go get github.co ...

  8. Beego学习笔记——Config

    配置文件解析 这是一个用来解析文件的库,它的设计思路来自于database/sql,目前支持解析的文件格式有ini.json.xml.yaml,可以通过如下方式进行安装: go get github. ...

  9. AM335x(TQ335x)学习笔记——触摸屏驱动编写

    前面几篇文章已经通过配置DTS的方式完成了多个驱动的移植,接下来我们解决TQ335x的触摸驱动问题.由于种种原因,TQ335x的触摸屏驱动是以模块方式提供的,且Linux官方内核中也没有带该触摸屏的驱 ...

随机推荐

  1. scrapy 改 scrapy-redis

    1.spider 修改 class CgysSpider(scrapy.Spider): name = 'clispider' start_urls = ['https://search.bilibi ...

  2. CentOS7 开放端口 通过 firewall-cmd 工具来操作防火墙

    CentOS7 提供了 firewall-cmd 工具来操作防火墙. firewall-cmd --permanent:表示设置为持久,配置被写入配置文件,跨重启,不会立即生效,重新加载配置后生效.不 ...

  3. JanusGraph入门,schema及数据模型

    5.Schema和数据建模 每个JanusGraph都有一个schema,该schema由edge labels,property keys,和vertex组成.JanusGraph schema可以 ...

  4. 【mybatis】JdbcType 与Oracle、MySql数据类型对应关系

  5. 11-散列4 Hashing - Hard Version (30 分)

    Given a hash table of size N, we can define a hash function H(x)=x%N. Suppose that the linear probin ...

  6. BeanPostProcessor

    BeanPostProcessor简介 BeanPostProcessor是Spring IOC容器给我们提供的一个扩展接口.接口声明如下: public interface BeanPostProc ...

  7. 微服务异步架构---MQ之RocketMQ

    “我们大家都知道把一个微服务架构变成一个异步架构只需要加一个MQ,现在市面上有很多MQ的开源框架.到底选择哪一个MQ的开源框架才合适呢?” 一.什么是MQ?MQ的原理是什么? MQ就是消息队列,是Me ...

  8. 【Gamma】“北航社团帮”展示博客

    目录 团队介绍 项目愿景 整个项目的预期典型用户 功能展示 原预期用户数量 项目使用情况数据分析 用户量变化 学生认证人数 社长认证人数 入社申请数 活动发布 新闻发布 网页端使用情况 小程序打开次数 ...

  9. 可能是全网最好的MySQL重要知识点 | 面试必备

    可能是全网最好的MySQL重要知识点 | 面试必备  mp.weixin.qq.com 点击蓝色“程序猿DD”关注我 回复“资源”获取独家整理的学习资料! 标题有点标题党的意思,但希望你在看了文章之后 ...

  10. 基于ZYNQ的uart传输任意长度的数据

    1.参考 UG585 网络笔记 参考:ZYNQ进阶之路14–PS端uart串口接收不定长数据 2.理论知识 参见上一次实验:基于ZYNQ 的UART中断实验之串口写数据到DDR3中 3.实验目的 基于 ...