需要用到谷歌浏览器的扩展程序 Advanced Rest Client进行模拟请求
1.直接上代码
from flask import Flask
from flask import request
from flask import abort
from flask import jsonify
import re
app = Flask(__name__)
@app.route('/')
def index():
return 'hello world'
@app.route('/message/',methods=['GET'])
def get_message(message_id):
if message_id == 'all':
search = 'all'
else:
if re.match(r'^\d+$',message_id):
search = int(message_id)
else:
abort(400)
messages = [{'id':1,'site':'baidu'},{'id':2,'site':'taobao'}]
res = {}
if search == 'all':
res['result'] = messages
res['status'] = 'success'
else:
for item in messages:
if item['id'] == search:
res['result'] = [item]
res['status'] = 'success'
break
if 'result' not in res:
res['status'] = 'error'
res['content'] = 'id is not in range'
if request.headers['Content-Type'] == 'application/json':
return jsonify(res),{'Content-Type':'application/json'}
elif request.headers['Content-Type'] == 'text/xml':
if 'result' not in res:
return '''<?xml version="1.0"?>
%s
%s
'''%(res['status'],res['content']),{'Content-Type':'text/xml'}
else:
res_head = '<?xml version="1.0"?>'
res_foot = 'success'
res_body = ''
for item in res['result']:
res_body += '{id}{site}'.format(id=item['id'],site=item['site'])
res_whole = res_head + res_body + res_foot
return res_whole,{'Content-Type':'text/xml'}
else:
return str(res)
if __name__ == '__main__':
app.run(port=5100)
代码解释
restful api请求路由:/message/,message_id为 all 或者 整型数字
数据源:messages = [{'id':1,'site':'baidu'},{'id':2,'site':'taobao'}]
代码中的abort:触发400错误即报Bad RequestThe 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.直接上测试结果图
注:有不懂的可以私信博主本人
从api接口获取数据-okhttp
首先先介绍下api接口: API:应用程序接口(API:Application Program Interface) 通常用于数据连接,调用函数提供功能等等... 从api接口获取数据有四种方式:Ht ...
Python 之 Restful API设计规范
理解RESTful架构 Restful API设计指南 理解RESTful架构 越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种"互联网软件"采用客户端/服务器模式 ...
python httplib get和post获取数据
httplib 下的 status http请求的状态 200 404 500... reason 返回答复 OK或者 FAULRE read() 读取内容 get方法: #!/usr/bin/e ...
使用Python调用Flickr API抓取图片数据
Flickr是雅虎旗下的图片分享网站,上面有全世界网友分享的大量精彩图片,被认为是专业的图片网站.其API也很友好,可以实现多种功能.这里我使用了Python调用其API获得了大量的照片数据.需要注意 ...
requests从api中获取数据并存放到mysql中
python的requests库是一个非常强大的库,requests的安装方法十分简单,用: pip install requests 即可安装requests,安装成功后: import reque ...
『Python』Python 调用 ZoomEye API 批量获取目标网站IP
#### 0712 更新 原API的访问方式是以 HTTP 的方式访问的,根据官网最新文档,现在已经修改成 HTTPS 方式,测试可以正常使用API了. 0x 00 前言 ZoomEye 的 ...
python操作从数据库中获取数据的接口
1.输入一个表名,获取表里面的数据 2.判断用户是否存在,如果不存在就添加到数据库里面
从 falcon api 中获取数据
import json import time import requests openfalcon = 'http://ip:port/api/v1' user = 'user' password ...
随机推荐
【bzoj3211】花神游历各国
Description Input Output 每次x=1时,每行一个整数,表示这次旅行的开心度 Sample Input 4 1 100 5 551 1 2 2 1 2 1 1 2 2 2 ...
java运算优先级
列号 符号 名称 结合性(与操作数) 目数 说明 1 . 点 从左到右 双目 ( ) 圆括号 从左到右 [ ] 方括号 从左到右 2 + 正号 从右到左 单目 - 负号 从右到左 单目 ++ ...
cdoj 1328 卿学姐与诡异村庄 Label:并查集 || 二分图染色
卿学姐与诡异村庄 Time Limit: 4500/1500MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit ...
修改setup.py的源
方法一: 修改文件 ~/.pydistutils.cfg为: [easy_install] index_url = /simple 方法二: 直接在setu ...
java正则表达式之java小爬虫
这个java小爬虫,功能很简单,只有一个,抓取网上的邮箱.用到了javaI/O,正则表达式. public static void main(String[] args) throws IOExce ...
javascript之基本包装类型(Boolean,Number,String)基础篇
前几天整理了javascript中Array方面的知识,但是String中的一些方法多多少少和Array里的方法有些类似容易混淆,就顺便连同String所在的包装类一起整理一下,希望可以帮助到初学者, ...
Power Map
推荐64位版本Office,但会遇到以下问题 建议大多数用户使用 32 位 Office 我们建议使用 32 版本的 Office,因为它与大多数其他应用程序更加兼容,尤其是第三方加载项.这也是默认安 ...
ORACLE DUAL表详解 .
今天在戴明明同学的QQ空间里看到篇不错的关于DUAL表的文章,自己平时也时而会用到,可是没有系统的学习过,借这个机会学习学习~ ==================================== ...
System.IO
I/O 1.文件操作:File (1)voidAppendAllText(string path, string contents) (2)boolExist ...