百度智能云数据可视化Sugar BI 绑定数据方式 - API概述
文档简介:
Sugar BI上的图表和过滤条件数据可以由用户通过 API 的形式来提供。Sugar BI会在后端通过 POST 的方式访问用户的 API,并在请求的 body 中带上过滤条件、下钻参数、联动参数等当前图表拉取数据时需要的信息,可以参考后面每个语言下如何获取的说明。具体的请求情况可以在图表的数据「调试」时弹框中看到。
Sugar BI上的图表和过滤条件数据可以由用户通过 API 的形式来提供。Sugar BI会在后端通过 POST 的方式访问用户的 API,并在请求的 body 中带上过滤条件、下钻参数、联动参数等当前图表拉取数据时需要的信息,可以参考后面每个语言下如何获取的说明。具体的请求情况可以在图表的数据「调试」时弹框中看到。
用户的 API 返回数据要求都是 JSON 类型,格式如下:
{ status: 0, // 0表示成功,非0表示失败 msg: '', // 失败时的提示信息 data: {...} // 具体的数据 }
每种图表和过滤条件的 API 数据格式要求都不太一样,详见各种图表的 API 格式要求。
在各种语言下获取过滤条件的方法
Node
以 Express 为例
const express = require('express'); const app = express(); const bodyParser = require('body-parser');
app.use(bodyParser.json()); app.post('/api', function(req, res) { console.log(req.body);
// 查询条件的 json res.json(...); }) app.listen(3000)
Java
以 Spring 为例
@RequestMapping(value = "/api", method = POST, consumes = MediaType.ALL_VALUE, produces
= MediaType.APPLICATION_JSON_UTF8_VALUE) @ResponseBody public String api(@RequestBody String filter)
{ // filter 就是字符串形式的 json,需要使用 Jackson 等库解析为对象来使用 }
PHP
<?PHP
$json = file_get_contents('php://input');
$data = json_decode($json);
.NET
using Microsoft.AspNetCore.Mvc; using System.IO; using Newtonsoft.Json; namespace
MvcMovie.Controllers { public class HelloWorldController : Controller { [HttpPost]
public JsonResult Index() { using (var reader = new StreamReader(HttpContext.Request.Body))
{ dynamic json = JsonConvert.DeserializeObject(reader.ReadToEnd()); var conditions =
json.conditions; var data = new { status = 0, msg = "" }; return Json(data); } } } }
go
func api(w http.ResponseWriter, r *http.Request) { body, _ := ioutil.ReadAll(r.Body) var result
map[string]interface{} // 这里简化了,最好参考对应的参数说明文档创建 struct json.Unmarshal(body, &result) }
Python
import json # falcon 框架 class SugarAPI(object): def on_post(self, req, resp): data = json.
load(req.bounded_stream) # flask 框架 from flask import request @app.route('/api', methods=['POST']) def sugar_api(): data = json.loads(request.data)
Ruby
require 'sinatra' require 'json' post '/api/' do request.body.rewind
request_payload = JSON.parse request.body.read end