from flask import Flask,jsonify,request,abort,make_response app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World!'
@app.route('/app/get/<string:name>',methods = ['GET']) def get_name(name): if name == '123': return 'Name is OK' else: abort(404) if __name__ == '__main__': app.run(host='127.0.0.1',debug=True,port=9099)
问题记录:
1. 如果执行报错:以一种访问权限不允许的方式做了一个访问套接字的尝试; 则代表使用的端口被占用,更换一个端口;
2. 如果报错:urls must start with a leading slash,检查route的地址最前面是否缺少/;
知识点:
1. app = Flask(__name__) __name__ 当前文件名,name是python中的特殊变量,如果文件作为主程序执行,那么__name__变量的值是__main__,如果是被其他模块引用,那么__name__的值是模块名称。
2. @app.route('/') 对此地址的请求,将转为对下面对应函数的调用。
3. @app.route('/api/tasks/<string:name>',methods = ['GET']) 路由器匹配规则:1. <id>默认接受的类型是str;2. <string:id>指定id的类型为str;3. <int:id>指定的id的类型为整形; 4. <float:id> 指定id的类型为浮点数(四舍五入,且不能接收整数类型);5. <path:path1> 指定接收的path为url的路径;
4. abort 用于返回通用的错误,比如:404,400,500
5. return只能返回字符串; jsonify 将传入的json形式数据序列化成为json字符串,作为响应的body,并设置响应的Content-Type为application/json,构造出响应返回客户端。
6. make_response自定义返回的object,一般接口都会返回一个数据和状态码,所以结构为make_response(jsonify(task_exist),400)
7. app.run(host='127.0.0.1',debug=True,port=9099) 启动服务,加debug自动帮忙重启。
在主程序中,执行run()来启动应用。