首页 > Windows开发 > 详细

简单API的实现

时间:2016-06-06 01:31:02      阅读:215      评论:0      收藏:0      [点我收藏+]

        之前在做系统资源上报时,因不知道怎么将数据上报给服务端再展示,后来用了一种最直接和不安全的方式,直接写入数据库,这样做很不方便,主要因为需要授权和做相关的防火墙策略(如果有几百上千台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‘]


本文出自 “天天向上goto” 博客,请务必保留此出处http://ttxsgoto.blog.51cto.com/4943095/1786210

简单API的实现

原文:http://ttxsgoto.blog.51cto.com/4943095/1786210

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!