2019独角兽企业重金招聘Python工程师标准>>>

由于网络问题就不放图了

在RESTful API的设计中,我打算自定义一个请求头,把token放进去以便向其他sora组件请求服务。

于是,把之前的代码稍微改成这样:

parser.add_argument('auth-token',type=str,help='put the token here',location='headers')

引用该值时,用法如下:

class TodoSimple(Resource):def get(self,todo_id):args = parser.parse_args()if args['auth-token'] == 'thisismytoken':return {todo_id:todos[todo_id]}else:return {'error':'token error'},401def put(self,todo_id):todos[todo_id] = request.form['data']return {todo_id:todos[todo_id]}

直接

args = parser.parse_args()

然后读取其中的值即可。

另外,之前的测试我只是简单地用-d指定“name=hochikong”操作getname资源,现在把它稍微改下。

class GetName(Resource):def post(self):args = parser.parse_args()name = args['name']#name = {}#name['ac'] = args['name']#name = request.json.get('name')return {'yourame':name}

但是curl的请求则变成这样:

curl -i -X POST -H 'Content-Type:application/json' -d '{"name":"hochikong"}' http://localhost:5000/getname

注意!:我发送的是JSON数据,所以要修改http head为application/json,另外:

'{"name":"hochikong"}'

JSON数据中的字符串要用双引号,否则会报错。而JSON数据外还需要套一个引号

我的完整代码:

__author__ = 'hochikong'
from flask import Flask,request
from flask.ext.restful import Resource,Api,reqparseapp = Flask(__name__)
api = Api(app)todos = {'task':'get the list of docker'}parser = reqparse.RequestParser()
parser.add_argument('name',type=str,help='get the name')                            #因为这句话“By default, the RequestParser tries to parse values from flask.Request.values, and flask.Request.json.”,#我们不需要在name这个参数后加‘location=json’,不过加了也无妨
parser.add_argument('auth-token',type=str,help='put the token here',location='headers')class TodoSimple(Resource):def get(self,todo_id):args = parser.parse_args()if args['auth-token'] == 'thisismytoken':return {todo_id:todos[todo_id]}else:return {'error':'token error'},401def put(self,todo_id):todos[todo_id] = request.form['data']return {todo_id:todos[todo_id]}class GetName(Resource):def post(self):args = parser.parse_args()name = args['name']#name = {}#name['ac'] = args['name']#name = request.json.get('name')return {'yourame':name}api.add_resource(TodoSimple,'/<string:todo_id>')
api.add_resource(GetName,'/getname')if __name__ == '__main__':app.run()

启动:

python flaskrr.py

发送请求测试getname资源:

hochikong@hochikong-P41T-D3:~/PycharmProjects/untitled/sora_test$ curl -i -X POST -H 'Content-Type:application/json' -d '{"name":"hochikong"}' http://localhost:5000/getname
HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 24
Server: Werkzeug/0.10.1 Python/2.7.6
Date: Sat, 11 Apr 2015 14:07:03 GMT
{"yourame": "hochikong"}hochikong@hochikong-P41T-D3:~/PycharmProjects/untitled/sora_test$

发送请求测试自定义head:

hochikong@hochikong-P41T-D3:~/PycharmProjects/untitled/sora_test$ curl -X GET -H 'auth-token:thisismytoken' http://localhost:5000/task
{"task": "get the list of docker"}hochikong@hochikong-P41T-D3:~/PycharmProjects/untitled/sora_test$

如果token不对:

hochikong@hochikong-P41T-D3:~/PycharmProjects/untitled/sora_test$ curl -X GET -H 'auth-token:thisisyourtoken' http://localhost:5000/task
{"error": "token error"}hochikong@hochikong-P41T-D3:~/PycharmProjects/untitled/sora_test$

测试成功。

不过设计RESTful API最辛苦的还是设计JSON请求格式,各种功能各种格式,我也是醉了

补充:

外部可见的服务器。
运行服务器后,会发现只有你自己的电脑可以使用服务,而网络中的其他电脑却不行。 缺省设置就是这样的,因为在调试模式下该应用的用户可以执行你电脑中的任意 Python 代码。

如果你关闭了 调试 或信任你网络中的用户,那么可以让服务器被公开访问。只要像 这样改变 run() 方法的调用:

app.run(host='0.0.0.0')
这行代码告诉你的操作系统监听一个公开的 IP 。

转载于:https://my.oschina.net/hochikong/blog/399066

#SORA#restapi的进一步的设计细节和实施相关推荐

  1. 缓存架构设计细节二三事

    缓存架构设计细节二三事 原创 2016-03-08 58沈剑 架构师之路 本文主要讨论这么几个问题: (1)"缓存与数据库"需求缘起 (2)"淘汰缓存"还是&q ...

  2. [龙讯6号]龙芯2E首次公布设计细节

    LSLSLSLSLSLSLSLSLSLSLSLSLSLSLSLS                                                === 龙讯 ===           ...

  3. Vue.js 官方团队成员霍春阳新作,深入解析 Vue.js 设计细节

    霍春阳(Hcy),Vue.js 官方团队成员.专注于 Web 研发领域,是 Vue.js 3 的核心贡献者之一,Vue.js 文档生成工具 Vuese 的作者,技术社区活跃者,曾撰写大量颇受好评的技术 ...

  4. 【 C++ 技术】 C++ 高性能服务器网络框架设计细节

    作者:范蠡  原文:C++ 高性能服务器网络框架设计细节 前言 这篇文章我们将介绍服务器的开发,并从多个方面探究如何开发一款高性能高并发的服务器程序.需要注意的是一般大型服务器,其复杂程度在于其业务, ...

  5. 这些设计细节虽小,但俘获了用户的心

    一个产品能否让人记忆深刻,除了能帮用户解决问题外(kano模型中的必要属性),能给用户带来一定的惊喜是必不可少的(kano模型中的魅力属性).接下来我们看看下面的产品是如何通过设计细节打动用户并达成产 ...

  6. UI设计中的App标签栏中的设计细节

    今天苏州学码思小编总结了一些App标签栏中的设计细节,为学习UI设计的学员提供切实有效的学习方法. 标签栏是app的导航,具有明确的表意功能,其作用是辅助文字来指引用户进行快速导航,具有图形化的符号, ...

  7. 3G/4G/5G通信模块重启设计细节

    无线通信模块本身实际是一个小网关,网关总是会因为各种原因崩溃的.在崩溃时,最后的保障就是重启,这个重启需要很多设计细节考虑. 1.硬件上是需要硬件重启开关的,这是最后的一个保障.想试图利用软件狗重启整 ...

  8. 安卓APP设计规范和设计细节

    我们在进行安卓APP设计时,需要好好调整之前的设计规范和设计细节.根据目前流行的安卓手机的系统体验来完成我们的安卓APP设计规范.应该说这是整理出最全面的安卓app设计规范. 1.安卓app设计规范之 ...

  9. 移动端手机详情页html,15个手机详情页设计细节,助你输出高品质页面

    15个手机详情页设计细节,助你输出高品质页面 8月 6, 2019 发表于: 视觉设计. 评论 Sponsor 前言:这是一篇扫盲式的手机详情页的设计细节文章,主要写给0基础的小白设计师的,大佬们笑一 ...

最新文章

  1. nacos项目搭建(服务提供者,服务消费者)
  2. sudo apt-get update: 0% [正在等待报头]
  3. 谷歌重磅开源新技术:5行代码打造无限宽神经网络模型,帮助“打开ML黑匣子”...
  4. 给你十年时间你可以做到吗?
  5. python回归分析预测模型_Python与线性回归模型预测房价
  6. javascript深拷贝和浅拷贝
  7. 凯立德手机导航(家园版) v5.3 for android,凯立德手机导航(家园版)android平台
  8. volatile的作用及原理
  9. Perl中删除或替换字符串中特殊字符(如空格)的方法
  10. Gesture APIs-Furthering Windows Mobile 6.5 Touch Gesture Framework
  11. 九宫怎么排列和使用_开心数独:好友都在玩的数独九宫格小游戏,居家无聊杀时间必备!...
  12. KVM详解(八)——KVM虚拟机自启动
  13. 变迁是这个时代最好的机遇
  14. 计算机四级题类型,全国计算机四级网路工程师考试题目分为几大类型,各多少分?...
  15. 国家鼓励的软件企业定期减免企业所得税
  16. WebStorm英文版汉化
  17. Mysql和Navicat
  18. Microsoft Visual Studio + Qt插件编程出现错误error MSB4184问题
  19. 用软件查看内存大小和插槽数
  20. 软件工程网络15个人阅读作业2(201521123044 吴敏烽)

热门文章

  1. 【MySQL-函数】MySQL常用数学函数:round,ceil,floor,truncate,mod
  2. 乒乓操作的写入控制器
  3. 数据中台建设(规划篇)
  4. LA2402 Fishnet 四边形面积
  5. 【链环科技】如何利用“私域流量”——小程序直播做到高转化低退货
  6. 风格迁移相关论文阅读笔记
  7. 关于Vue在面试中常常被提到的几点(持续更新……)
  8. 学python的亲身经历_你要偷偷的学Python,然后惊呆所有人
  9. 电脑开机右下角有小金锁,并且提示一分钟后重启电脑
  10. YX133具有12位ADC与16位PWM的8位OTP单片机,SOP和QFN小封装单片机适合电子烟等便携产品使用