理解
- 每一个URL代表一种资源
- 客户端和服务端之间,传递这种资源的某种表现层,客户端通过四个HTTP动词
- 对服务端资源进行操作,实现“表现层状态转化”
- 资源:网络的具体信息,如图片、文字等
- 表现层:"资源"是一种信息实体,它可以有多种外在表现形式。我们把"资源"具体呈现出来的形式,如,文本可以用txt格式表现,也可以用HTML格式、XML格式、JSON格式表现
- 状态转化:访问一个网站,就代表了客户端和服务器的一个互动过程。在这个过程中,势必涉及到数据和状态的变化。
- 4个HTTP动词:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。
安装 flask restful
1.cmd输入:pip install flask,安装flask
2.cmd输入:pip install flask-restful,安装flask-restful
安装过程中会出现如下报错:
You are using pip version 9.0.1, however version 19.2.3 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' comm and.
解决方法
升级pip python -m pip install --upgrade pip
注意:某些Flask版本下,引入模块时采用from flask.ext.restful import Api出错,则可以使用from flask_restful import Api
官网教程
例证
restful.py 内容:
#!/usr/bin/python3 # encoding:utf-8 from flask import Flask,request from flask_restful import reqparse, abort, Api, Resource #初始化app、api app = Flask(__name__) api = Api(app) LISTS = [ {'parameter': '首页'}, {'parameter': '登录'}, {'parameter': '后台'} ] # /LISTS/<list_id>(url参数),判断输入的参数值列表LISTS下标越界,越界则退出 def abort_if_list_doesnt_exist(list_id): try: LISTS[list_id] except IndexError: abort(404, message="输入的值,不在范围内") ''' add_argument('per_page', type=int, location='args') str add_argument中通过指定参数名、参数类型、参数获取方式来获取参数对象并支持做合法性校验 第一个参数是需要获取的参数的名称 参数type: 参数指的类型, 如果参数中可能包含中文需要使用six.text_type. 或直接不指定type 参数location: 获取参数的方式,可选的有args(url中获取)、json(json类型的)、form(表单方式提交) 参数required:是否必要,默认非必要提供 required=True(必须) 参数help:针对必要的参数,如果请求时没有提供,则会返回help中相应的信息 ''' parser = reqparse.RequestParser() #入参parameter,location='json'表示为入参为json格式 parser.add_argument('parameter',location='json') # 路由类,函数get、post、put、delete等实现http请求方法 # url不带入参 /LISTS class c_dictList(Resource): #类型get,根据列表LISTS,处理,返回一个新的列表r_lists def get(self): r_lists = [] for listV in LISTS: if listV: new_list = {} #LISTS列表存的是字典,遍历时为字典listV['parameter'],可获取字典值 new_list['parameter'] = listV['parameter'] #LISTS为列表,index可以查出对应下标值 new_list['url'] = 'url/'+ str(LISTS.index(listV)) #LISTS列表中添加字典 r_lists.append(new_list) return r_lists #类型post,在列表LISTS后添加一个值,并返回列表值 def post(self): args = parser.parse_args() list_id = len(LISTS) #args['parameter'],入参 LISTS.append({'parameter': args['parameter']}) return LISTS, 201 # 路由类,函数get、post、put、delete等实现http请求方法 # url带入参 /LISTS/<list_id> class c_dict(Resource): #根据输入url入参值作为LISTS的下标,返回该值 def get(self, list_id): url_int = int(list_id) abort_if_list_doesnt_exist(url_int) return LISTS[url_int] #根据输入url入参值作为LISTS的下标,修改该值,并返回列表值 def put(self, list_id): url_int = int(list_id) args = parser.parse_args() #args['parameter'],入参 parameter = {'parameter': args['parameter']} LISTS[url_int] = parameter return LISTS, 201 #根据输入url入参值作为LISTS的下标,删除该值 def delete(self, list_id): url_int = int(list_id) abort_if_list_doesnt_exist(url_int) del LISTS[url_int] return '', 204 #设置资源路由api.add_resource(类名,url路径) #url,不带入参,如:http://127.0.0.1:8891/LISTS api.add_resource(c_dictList, '/LISTS') #url,带入参,<list_id>为变量值,如:http://127.0.0.1:8891/LISTS/1 api.add_resource(c_dict, '/LISTS/<list_id>') if __name__ == '__main__': #不设置ip、端口,默认:http://127.0.0.1:5000/ #app.run(debug=True) #设置ip、端口 app.run(host="127.0.0.1", port=8891,debug=True)
控制台运行结果:
Serving Flask app "123" (lazy loading) * Environment: production
WARNING: This is a development server. Do not use it in a productiondeployment. Use a production WSGI server instead. * Debug mode: onRestarting with stat * Debugger is active! * Debugger PIN: 279-443-943 * Running on http://127.0.0.1:8891/ (Press CTRL+C toquit)
postman调用结果
url不带参数
get
post,有请求入参,格式为json,入参值追加到列表后面
url带参数get,根据url入参值如下图值=1,作为LISTS的下标,获取列表值
put ,根据url入参值如下图值=1,作为LISTS的下标,修改该列表值为请求入参值,登录改为订单
put ,根据url入参值如下图值=2,作为LISTS的下标,删除该值,成功返回状态204
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]