【问题标题】:How to send post request to node.js from python to utilize geckoboard?如何从 python 向 node.js 发送发布请求以利用 geckoboard?
【发布时间】:2018-06-22 02:53:33
【问题描述】:

Geckoboard 提供 this documentation 连接到他们的数据集 API,您可以在下面看到实现。

var API_KEY = 'API_KEY';

var gb = require('geckoboard')(
  API_KEY
);


gb.datasets.findOrCreate(
  {
    id: 'sales.by_day',
    fields: {
      quantity: {
        type: 'number',
        name: 'Number of sales'
      },
      gross: {
        type: 'money',
        name: 'Gross value of sales',
        currency_code: "USD"
      },
      date: {
        type: 'date',
        name: 'Date'
      }
    }
  },
  function (err, dataset) {
    if (err) {
      console.error(err);
      return;
    }
    dataset.put(
      [
        { date: '2016-01-01', quantity: 819, gross: 2457000 },
        { date: '2016-01-02', quantity: 409, gross: 1227000 },
        { date: '2016-01-03', quantity: 164, gross: 492000 }
      ],
      function (err) {
        if (err) {
          console.error(err);
          return;
        }

        console.log('Dataset created and data added');
      }
    );
  }
);

我想看看是否有办法通过 python(不使用 node.js)发布这些附加数据。这样的事情是可能的还是我必须使用模式?

[
    { date: '2017-01-01', quantity: 1213, gross: 23423 },
    { date: '2017-01-02', quantity: 111, gross: 1313123 },
    { date: '2017-01-03', quantity: 333, gross: 21314 }
]

【问题讨论】:

标签: python geckoboard


【解决方案1】:

更新:Geckoboard 现在为其数据集 API 提供了自己的官方 Python 客户端库 https://github.com/geckoboard/geckoboard-python


绝对可以将 Python 与 Geckoboard 的数据集 API 结合使用。您可以使用任何可以使用 JSON 执行 HTTPS 请求的语言或平台——尽管 Geckoboard 到目前为止只发布了 Ruby 和 Node 的官方库。

编辑:我在下面做了一个简单的例子,但后来发现:https://github.com/helium/geckoboard-python/

简而言之,您只需要:

  • PUTschema 对象到 https://api.geckoboard.com/datasets 以创建数据集
  • PUTdata 数组到 https://api.geckoboard.com/datasets/:id 替换数据集中的所有数据
  • POSTdata 数组添加到 https://api.geckoboard.com/datasets/:id 以附加到数据集中的数据
  • DELETEhttps://api.geckoboard.com/datasets/:id 删除数据集

这些请求概述在 -- https://developer.geckoboard.com/api-reference/curl/

我没有写太多 Python,所以这可能不是很 Pythonic,但您可以使用下面的 requests 库在 Python 中创建一个 Geckoboard 库来为您执行此操作:

import requests

  class Geckoboard(object):
          def __init__(self, api_key):
                  self.api_key = api_key

          def create(self, name, schema):
                  url = 'https://api.geckoboard.com/datasets/%s' % name
                  return requests.put(url, json=schema, auth=(self.api_key, ''))

          def delete(self, name):
                  url = 'https://api.geckoboard.com/datasets/%s' % name
                  return request.delete(url, auth=(self.api_key, ''))

          def replace(self, name, data):
                  url = 'https://api.geckoboard.com/datasets/%s/data' % name
                  return requests.put(url, json=data, auth=(self.api_key, ''))

          def append(self, name, data):
                  url = 'https://api.geckoboard.com/datasets/%s/data' % name
                  return requests.post(url, json=data, auth=(self.api_key, ''))

【讨论】:

  • 谢谢!我尝试使用替换功能并将其作为数据输入: [{'date':'2016-01-01','quantity': 819,'gross':2457000 },{'date':'2016-01 -02','数量':409,'毛':1227000 },{'日期':'2016-01-03','数量':164,'毛':492000}]。但是,我收到以下错误:{u'error': {u'message': u'Invalid JSON was received by the server.'}}
  • 我想我明白了!数据输入应该是 {'data':[{'date':'2016-01-01','quantity': 819,'gross':2457000 },{'date':'2016-01-02', “数量”:409,“毛”:1227000 },{“日期”:“2016-01-03”,“数量”:164,“毛”:492000}]}
猜你喜欢
  • 2020-10-30
  • 2018-09-06
  • 2019-03-07
  • 1970-01-01
  • 2013-02-13
  • 2019-04-08
  • 1970-01-01
  • 1970-01-01
  • 2015-11-26
相关资源
最近更新 更多