Restful-api实现

 0、写在前面

 做微信公众号发现基本就是对接口,所以自己实现一下Restful-api来加深下理解

 通过这个可以实现前后端的分离

 前端是独立的web,比如vue,专注于页面表现,数据通过接口(json/xml)从后端获取

 后端是独立的web,比如flask,专注与逻辑和数据的操作,可以和众多前端交互,前端可以是网站、客户端、移动端都可

 前后端理论上约定好即可,不一定要按照常规的规范

 一切皆资源

1、flask框架实现

 1 # -*- coding: utf-8 -*-
 2 from flask import Flask
 3 from flask_restful import reqparse, abort, Api, Resource
 4 
 5 app = Flask(__name__)
 6 api = Api(app)
 7 
 8 #一个字典,代表数据
 9 class1 = {
10     '001':{ 'name':'','age':11 },
11     '002':{ 'name':'','age':12 },
12     '003':{ 'name':'','age':13 }
13 }
14 
15 
16 def get_class_id(id):
17     if not str(id) in class1:
18         abort(404, message="id(%s) is not found"%(id))
19 
20 #资源组的增查,对应get,post
21 class TaskListAPI(Resource):
22     def __init__(self):
23         self.reqparse = reqparse.RequestParser()
24         self.reqparse.add_argument('id',type=dict, required = True,
25             help = "pleas return json", location = 'json')
26         super(TaskListAPI, self).__init__()
27 
28     def get(self):
29         return class1
30 
31     def post(self):
32         task = self.reqparse.parse_args()['id']
33         class1.update(task)
34         return task
35 
36 
37 #单一资源组的删改查,对应delete,put,get
38 class TaskAPI(Resource):
39     def __init__(self):
40         self.reqparse = reqparse.RequestParser()
41         self.reqparse.add_argument('name', type = str, required = True,
42             help = 'name required', location = 'json')
43         self.reqparse.add_argument('age', type = int, default = 10, location = 'json')
44         super(TaskAPI, self).__init__()
45 
46     def get(self, id):
47         get_class_id(id)
48         return class1[id]
49 
50     def put(self, id):
51         get_class_id(id)
52         name= self.reqparse.parse_args()['name']
53         age = self.reqparse.parse_args()['age']
54         task = { 'name':name,'age':age }
55         class1[id] = task
56         return task,201
57 
58     def delete(self, id):
59         get_class_id(id)
60         task = class1[id]
61         del class1[id]
62         return task,204
63 
64 api.add_resource(TaskListAPI, '/todo/api/v1.0/tasks', endpoint = 'tasks')
65 api.add_resource(TaskAPI, '/todo/api/v1.0/tasks/<id>', endpoint = 'task')
66 
67 if __name__ == '__main__':
68     app.run(debug=True)
app.py

 

转载于:https://www.cnblogs.com/cx59244405/p/10600755.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值