python flask api_python之restful api(flask)获取数据

需要用到谷歌浏览器的扩展程序 Advanced Rest Client进行模拟请求

1.直接上代码

1 from flask importFlask2 from flask importrequest3 from flask importabort4 from flask importjsonify5 importre6

7 app = Flask(__name__)8

9 @app.route('/')10 defindex():11 return 'hello world'

12

13

14 @app.route('/message/',methods=['GET'])15 defget_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'] =messages29 res['status'] = 'success'

30 else:31 for item inmessages:32 if item['id'] ==search:33 res['result'] =[item]34 res['status'] = 'success'

35 break

36 if 'result' not inres: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 inres:44 return '''<?xml version="1.0"?>45 46 %s47 %s48 49 '''%(res['status'],res['content']),{'Content-Type':'text/xml'}50 else:51 res_head = '<?xml version="1.0"?>'

52 res_foot = 'success'

53 res_body = ''

54 for item in res['result']:55 res_body += '{id}{site}'.format(id=item['id'],site=item['site'])56 res_whole = res_head + res_body +res_foot57 return res_whole,{'Content-Type':'text/xml'}58 else:59 returnstr(res)60

61

62

63 if __name__ == '__main__':64 app.run(port=5100)

代码解释

restful api请求路由:/message/,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.直接上测试结果图

1436840-20180724162101001-1115459701.png

1436840-20180724162110278-434643887.png

1436840-20180724162118556-484357377.png

1436840-20180724162127075-1966613862.png

1436840-20180724162134351-1185921545.png

1436840-20180724162141373-1390306343.png

1436840-20180724162337533-2091378898.png

1436840-20180724164557496-444271225.png

注:有不懂的可以私信博主本人

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值