miketwais

work up

web.py框架构建一个API demo

初识python,因为工作中接触到iredadmin管理后台系统,看了看源代码,发现是使用web.py框架写的,原本只知道python的django框架,原来python也有这么多 框架可用,别有洞天啊。

1.安装python

  具体过程不多说了,baidu下,默认我们的python安装目录在 D:\Python27

2.安装web.py

  下载源码到你的python项目代码目录(自己随意),比如D:\pythonproject,web.py下载地址:

https://github.com/webpy/webpy/tarball/master

下载后解压到目录中然后进入到cmd命令终端,切换到D:\pythonproject里面的项目安装目录,执行命令:

python setup.py install

至此安装完成。


3.在目录中新建一个文件code.py.代码如下

#!/usr/bin/env python
import web
import json
import xml.etree.ElementTree as ET

tree = ET.parse('users.xml')
root = tree.getroot()
urls = (
        '/', 'index',
        '/showget','showget',
        '/users','list_users',
        '/show','getjson',
        '/put/(.*)','showpost',
        '/showname/(.*)','showname'
        
)
#1
class index:
    def GET(self):
    return    'Hello, world!'
#2 read xml
class list_users:
    def GET(self):
        output = 'users:[';
        for child in root:
            print 'child',child.tag,child.attrib
            output +=str(child.attrib)+','
        output += ']';
    return output
#3 接收GET请求,返回GET数据中name的值
class showget:
    def GET(self):
        data = web.input()
    return data['name']
#4 接收POST请求,返回json数据
class getjson:
    def POST(self):
        pyDict = {'one':1,'two':2}
        web.header('Content-Type','application/json')
        return json.dumps(pyDict)
#5 接收POST请求,返回POST数据
class showpost:
    def POST(self):
        data = web.data()
    return str(data)
#6 name参数的应用
class showname:
    def GET(self,name):
    return name    
if __name__ == '__main__':
    app = web.application(urls,globals())
    app.run()
View Code

 

users.xml

<users>
    <user id="1" name="Rocky" age="38"/>
    <user id="2" name="Steve" age="50"/>
    <user id="3" name="Melinda" age="38"/>
</users>
View Code

 

 

web.py自带服务器,所以可以选择使用自带服务器运行,当然也可以自己安装服务器,推荐使用apache+mod_wsgi.so的组合,具体可以百度安装过程。(windows上安装容易出错,可以在linux或者虚拟机上安装)使用命令:Python code.py访问127.0.0.1:8080可以看到hello,world!即表示成功

 

以上只是web.py的简单演示,当然根据业务自己添加相应接口功能是必须的。

#3 接收GET请求,返回GET数据中name的值127.0.0.1:8080/showget?name=miketwais 返回miketwais

#4 接收POST请求,返回json数据#5 接收POST请求,返回POST数据两个POST 请求请用fiddle来模拟POST请求实验

另外:如果直接COPY代码测试可能会报错,python对格式要求十分严格,自己敲一下吧。。。



posted @ 2016-10-20 16:55  MasonZhang  阅读(514)  评论(0)    收藏  举报