1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > python flask restful api_python之restful api(flask)获取数据

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

时间:2023-09-01 07:35:28

相关推荐

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

需要用到谷歌浏览器的扩展程序 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&colon;并查集 &vert;&vert; 二分图染色

卿学姐与诡异村庄 Time Limit: 4500/1500MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit ...

修改setup&period;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表详解 &period;

今天在戴明明同学的QQ空间里看到篇不错的关于DUAL表的文章,自己平时也时而会用到,可是没有系统的学习过,借这个机会学习学习~ ==================================== ...

System&period;IO

I/O 1.文件操作:File (1)voidAppendAllText(string path, string contents) (2)boolExist ...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。