Skip to content

Commit da789ed

Browse files
committed
add RESTful API
1 parent 394830f commit da789ed

File tree

3 files changed

+113
-1
lines changed

3 files changed

+113
-1
lines changed

Flask-16-restful/manage.py

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
import logging.config
2+
from flask import Flask, jsonify
3+
from flask_restful import Api, Resource, reqparse
4+
5+
logging.config.dictConfig(
6+
{
7+
"version": 1,
8+
"disable_existing_loggers": False,
9+
"formatters": {
10+
"simple": {"format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"}
11+
},
12+
"handlers": {
13+
"console": {
14+
"class": "logging.StreamHandler",
15+
"level": "DEBUG",
16+
"formatter": "simple",
17+
"stream": "ext://sys.stdout",
18+
},
19+
"info_file_handler": {
20+
"class": "logging.handlers.RotatingFileHandler",
21+
"level": "INFO",
22+
"formatter": "simple",
23+
"filename": "info.log",
24+
"maxBytes": 10485760,
25+
"backupCount": 50,
26+
"encoding": "utf8",
27+
},
28+
"error_file_handler": {
29+
"class": "logging.handlers.RotatingFileHandler",
30+
"level": "ERROR",
31+
"formatter": "simple",
32+
"filename": "errors.log",
33+
"maxBytes": 10485760,
34+
"backupCount": 20,
35+
"encoding": "utf8",
36+
},
37+
"debug_file_handler": {
38+
"class": "logging.handlers.RotatingFileHandler",
39+
"level": "DEBUG",
40+
"formatter": "simple",
41+
"filename": "debug.log",
42+
"maxBytes": 10485760,
43+
"backupCount": 50,
44+
"encoding": "utf8",
45+
},
46+
},
47+
"loggers": {
48+
"my_module": {"level": "ERROR", "handlers": ["console"], "propagate": "no"}
49+
},
50+
"root": {
51+
"level": "DEBUG",
52+
"handlers": ["error_file_handler", "debug_file_handler"],
53+
},
54+
}
55+
)
56+
57+
USERS = [
58+
{"name": "zhangsan"},
59+
{"name": "lisi"},
60+
{"name": "wangwu"},
61+
{"name": "zhaoliu"}
62+
]
63+
64+
class Users(Resource):
65+
def __init__(self, **kwargs):
66+
self.logger = kwargs.get('logger')
67+
68+
def get(self):
69+
return jsonify(USERS)
70+
71+
def post(self):
72+
args = reqparse.RequestParser() \
73+
.add_argument('name', type=str, location='json', required=True, help="名字不能为空") \
74+
.parse_args()
75+
76+
self.logger.debug(args)
77+
78+
if args['name'] not in USERS:
79+
USERS.append({"name": args['name']})
80+
81+
return jsonify(USERS)
82+
83+
def delete(self):
84+
USERS = []
85+
return jsonify(USERS)
86+
87+
88+
class UserId(Resource):
89+
def __init__(self, **kwargs):
90+
self.logger = kwargs.get("logger")
91+
92+
def get(self, userid):
93+
return jsonify(
94+
{"name": USERS[int(userid)].get("name")}
95+
)
96+
97+
98+
app = Flask(__name__)
99+
api = Api(app, default_mediatype="application/json")
100+
101+
api.add_resource(Users, '/users', resource_class_kwargs={
102+
"logger": logging.getLogger('/Users')
103+
})
104+
105+
api.add_resource(UserId, '/user/<userid>', resource_class_kwargs={
106+
"logger": logging.getLogger('/UserId')
107+
})
108+
109+
app.run(host='0.0.0.0', port=5001, use_reloader=True, debug=True)

Flask-16-restful/requirements.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
flask
2+
flask-restful

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,5 @@
1414
12. [项目部署](https://xugaoxiang.com/2020/07/21/flask-12-deployment/)
1515
13. [常用项目结构](https://xugaoxiang.com/2020/08/19/flask-13-project-struture/)
1616
14. [蓝图](https://xugaoxiang.com/2020/08/24/flask-14-blueprint/)
17-
15. [日志](https://xugaoxiang.com/2020/08/25/flask-15-logging/)
17+
15. [日志](https://xugaoxiang.com/2020/08/25/flask-15-logging/)
18+
16. [RESTful-API](https://xugaoxiang.com/2020/08/26/flask-16-restful-api/)

0 commit comments

Comments
 (0)