python之restful api(flask)获取数据
2018-07-25 13:12:28来源:博客园 阅读 ()
需要用到谷歌浏览器的扩展程序 Advanced Rest Client进行模拟请求
1.直接上代码
1 from flask import Flask 2 from flask import request 3 from flask import abort 4 from flask import jsonify 5 import re 6 7 app = Flask(__name__) 8 9 @app.route('/') 10 def index(): 11 return 'hello world' 12 13 14 @app.route('/message/<message_id>',methods=['GET']) 15 def get_message(message_id): 16 if message_id == 'all': 17 search = 'all' 18 else: 19 if re.match(r'^\d+$',message_id): 20 search = int(message_id) 21 else: 22 abort(400) 23 24 messages = [{'id':1,'site':'baidu'},{'id':2,'site':'taobao'}] 25 res = {} 26 27 if search == 'all': 28 res['result'] = messages 29 res['status'] = 'success' 30 else: 31 for item in messages: 32 if item['id'] == search: 33 res['result'] = [item] 34 res['status'] = 'success' 35 break 36 if 'result' not in res: 37 res['status'] = 'error' 38 res['content'] = 'id is not in range' 39 40 if request.headers['Content-Type'] == 'application/json': 41 return jsonify(res),{'Content-Type':'application/json'} 42 elif request.headers['Content-Type'] == 'text/xml': 43 if 'result' not in res: 44 return '''<?xml version="1.0"?> 45 <objects> 46 <status>%s</status> 47 <content>%s</content> 48 </objects> 49 '''%(res['status'],res['content']),{'Content-Type':'text/xml'} 50 else: 51 res_head = '<?xml version="1.0"?><objects><result>' 52 res_foot = '</result><status>success</status></objects>' 53 res_body = '' 54 for item in res['result']: 55 res_body += '<item id="{id}"><id>{id}</id><site>{site}</site></item>'.format(id=item['id'],site=item['site']) 56 res_whole = res_head + res_body + res_foot 57 return res_whole,{'Content-Type':'text/xml'} 58 else: 59 return str(res) 60 61 62 63 if __name__ == '__main__': 64 app.run(port=5100)
代码解释
restful api请求路由:/message/<message_id>,message_id为 all 或者 整型数字
数据源:messages = [{'id':1,'site':'baidu'},{'id':2,'site':'taobao'}]
代码中的abort:触发400错误即报Bad Request The browser (or proxy) sent a request that this server could not understand. ,当message_id不是all 也不是整型数字时
注意一点:Advanced Rest Client 测试请求时不要在Headers指定Accept(因为它可以接受多种类型),而应该指定Content-Type
返回值没有用到状态码,而是通过判断返回值中的status是success还是error
2.直接上测试结果图
注:有不懂的可以私信博主本人
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash