简单API的实现

之前在做系统资源上报时,因不知道怎么将数据上报给服务端再展示,后来用了一种最直接和不安全的方式,直接写入数据库,这样做很不方便,主要因为需要授权和做相关的防火墙策略(如果有几百上千台client,就算用网段的形式,也需要重复操作),而且如果数据库的信息发生变化时,需要把所有客户端的数据库信息进行修改,比较麻烦;最近学习了一种通过url方式将数据传递给服务端,实现简单的api功能,简单例子如下:

客户端代码:

#!/usr/bin/env python
#coding:utf8
import json
import platform
import psutil
import urllib,urllib2
from multiprocessing import cpu_count

sys_info={}
sys_info[‘system‘] = [] 
sys_info[‘cpu‘] = []
sys_info[‘mem‘] = [] 
sys_info[‘disk‘] = []
sys_info[‘wip‘] = []

#系统信息
system=sys_info[‘system‘].append(platform.uname()[0])

#cpu个数
cpu_count=sys_info[‘cpu‘].append(cpu_count())

#内存
mem = psutil.virtual_memory()
mem_info = sys_info[‘mem‘].append(mem.total * 1 / (1024**3))

#磁盘空间
sdiskusage = psutil.disk_usage(‘/‘)
disk_info =sys_info[‘disk‘].append(sdiskusage.total * 1 / (1024**3))

#外网ip
def pub_ip():
    url = "http://ip.cip.cc"
    wip = urllib2.urlopen(url).readline().rstrip()
    return  wip
sys_info[‘wip‘].append(pub_ip())

if __name__ == ‘__main__‘:
    print sys_info
    print json.dumps(sys_info,indent=4,ensure_ascii=False)
    data = urllib.urlencode(query=sys_info)
    print data
    respose = urllib.urlopen(url="http://127.0.0.1:8090/serveradd/", data=data)

服务端代码(django):
urls.py设置

url(r‘^serveradd/$‘,‘app.views.serveradd‘),

视图代码(views.py)

def serveradd(req):
    if req.method == ‘GET‘:
        print "GET -----error"
    elif req.method == ‘POST‘:
        print "POST method"
        request_dict = req.POST
        print request_dict
        system = request_dict.get(‘system‘)
        wip = request_dict.get(‘wip‘)
        data = {k: v for k, v in request_dict.items()}
        host = Host.objects.filter(wip=wip).first()
        if not host:
            host = Host(**data)
        host.save(force_insert=True)
    data = {
            ‘msg‘: ‘ok‘,
            ‘status‘: ‘ok‘
            }
    return HttpResponse(data)
#结果
POST method
<QueryDict: {u‘mem‘: [u‘[4L]‘], u‘cpu‘: [u‘[4]‘], u‘disk‘: [u‘[232]‘], u‘system‘: [u"[‘Darwin‘]"], u‘wip‘: [u"[‘12.196.9.193‘]"]}>
----[‘Darwin‘]----[‘12.196.9.193‘]
时间: 2024-10-14 13:35:11

简单API的实现的相关文章

HDFS基本命令行操作及上传文件的简单API

一.HDFS基本命令行操作: 1.HDFS集群修改SecondaryNameNode位置到hd09-2 (1)修改hdfs-site.xml <configuration> //配置元数据存储位置 <property> <name>dfs.namenode.name.dir</name> <value>/root/hd/dfs/name</value> </property> //配置数据存储位置 <property

Yii2.0 实现RESTful风格的简单API

一.创建数据库 首先,在mysql中创建一个名为yii2basic的数据库,并创建一张名为player的表. 二.配置 1.app/config/db.php <?php return [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=yii2basic', 'username' => 'root', 'password' => '', 'charset' => 'utf8',

R 从零开始,简单API集合

1.简单的算数操作和向量运算 命令行启动 R,退出 q(). 可以在退出时保存项目进度,同目录下启动R时可以恢复进度. 获取函数帮助:help(solve) 或者 ?solve ,help.start() 启动html帮助 对于使用某个命令的例子,可以用example(topic)查看 R 大小写敏感, 命令可以被;隔开,可以使用({})构复合表达式,#开始到句尾为注释 如果一批命令保存在commands.R中,可以使用source("commands.R")执行 sink("

一个简单 API 例子:

做过 API 的人应该了解,其实开发 API 比开发 WEB 更简洁,但可能逻辑更复杂,因为 API 其实就是数据输出,不用呈现页面,所以也就不存在 MVC(API 只有 M 和 C),1.和 WEB 开发一样,首先需要一些相关的参数,这些参数,都会由客户端传过来,也许是 GET 也许是 POST,这个需要开发团队相互之间约定好,或者制定统一规范.2.有了参数,根据应用需求,完成数据处理,例如:任务进度更新.APP内购.一局游戏结束数据提交等等3.数据逻辑处理完之后,返回客户端所需要用到的相关数

kong配置service和route实现简单API代理

目录 通过konga连接kong实现API接口代理 1. ADD NEW SERVICE 2. ADD ROUTE 3. 验证API 代理 浏览器验证 请求kong api kong使用Admin API实现接口代理 通过konga连接kong实现API接口代理 前言: 之前已经对Kong的API做了学习理解,从本文开始,我们将学习如何使用KONG实现API接口代理.为此,您首先需要添加服务:即Kong用来指代其管理的上游API和微服务的名称. 本文中,我们将创建一个指向Mockbin API的

07-复习数组和简单api

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <script> //定义方法 // var arr1 = [1,2,3]; // var arr2 = new Array(1,2); // // var str1 = n

Jquery ui autocomplete简单api

重要说明:与配置选项类似,Autocomplete插件的方法也不是直接调用,而且通过autocomplete()方法进行间接调用.例如: $("#title").autocomplete( "方法名", "参数1", "参数2" ); Autocomplete的方法列表 close() 关闭自动完成显示的菜单. $( "#title" ).autocomplete( "close" );

浅谈 PHP 与手机 APP 开发(API 接口开发)

本文内容转载自:http://www.thinkphp.cn/topic/5023.html 这个帖子写给不太了解PHP与API开发的人 一.先简单回答两个问题: 1.PHP 可以开发客户端?答:不可以,因为PHP是脚本语言,是负责完成 B/S架构 或 C/S架构 的S部分,即:服务端的开发.(别去纠结 GTK.WinBinder) 2.为什么选择 PHP 作为开发服务端的首选?答:跨平台(可以运行在UNIX.LINUX.WINDOWS.Mac OS下).低消耗(PHP消耗相当少的系统资源).运

django入门 -- 简单流程

django入门 -- 简单流程 这里简单的演示完成一个 django 大概流程,后面会有详细解释 搭建开发环境 以下使用的是 ubuntu 系统 在生产环境中,有的时候,我们开发的项目可能用的是几个不同的 环境,所以通常我们会创建虚拟环境,在虚拟环境中安装我们需要的 配置,这里从配置虚拟环境开始 创建虚拟环境 创建:mkvirtualenv [虚拟环境名称] 删除:rmvirtualenv [虚拟环境名称] 进入:workon [虚拟环境名称] 退出:deactivate 所有的虚拟环境,都位