话不多说
安装flask-restful
pip3 install flask-restful
实现
models.py
class Article(db.Model):
# 定义表名
__tablename__ = 'article'
# 定义字段
# db.Column 表示是一个字段
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(50), unique=True)
content = db.Column(db.Text)
timestamp = db.Column(db.DateTime, default=datetime.utcnow)
app.py
引入flask-restful
from flask import Flask, render_template, session, redirect, url_for, flash
from flask_restful import Api, Resource
from forms import LoginForm
from flask import jsonify, request
from flask_admin import Admin
from models import Article
所有博客信息
@api.resource('/api/v1/blog')
class BlogApi(Resource):
def __init__(self):
super().__init__()
self.result = {
'method': '',
'vaesion': 'v1',
'data': '',
}
# 定义返回的数据
def create_data(self, blog):
result_data = {
'id': blog.id,
'title': blog.title,
'content': blog.content,
}
return result_data
def get(self):
data = request.args
id = data.get('id')
result_data = {}
if id:
leave = Article.query.get(int(id))
if leave is not None:
try:
result_data = self.create_data(leave)
self.result["code"] = 200
except:
self.result["code"] = 400
else:
try:
blogs = Article.query.all()
result_data = []
for leave in blogs:
one = self.create_data(leave)
result_data.append(one)
self.result["code"] = 200
except:
self.result["code"] = 400
self.result['method'] = 'get'
self.result['data'] = result_data
return jsonify(self.result)
打开postman请求一下
{
"code": 200,
"data": [
{
"content": "kkkkk",
"id": 3,
"title": "这是第二篇Flask博客"
},
{
"content": "hgjhgjgjhg",
"id": 5,
"title": "这是第四篇Flask博客"
}
],
"method": "get",
"vaesion": "v1"
}
单个博客信息
这里写了get和delete两种方法
@api.resource('/api/v1/blog/<int:post_id>')
class BlogSingleApi(Resource):
def __init__(self):
super().__init__()
self.result = {
'method': '',
'version': 'v1',
'data': '',
}
# 定义返回的数据
def create_data(self, blog):
result_data = {
'id': blog.id,
'title': blog.title,
'content': blog.content,
}
return result_data
def get(self, post_id):
"""
从数据库中获取数据
:return: 返回获取到的数据,200:获取成功,400:获取失败
"""
result_data = {}
if post_id:
leave = Article.query.get(int(post_id))
if leave is not None:
try:
result_data = self.create_data(leave)
self.result["code"] = 200
except:
self.result["code"] = 400
else:
self.result["code"] = "该文章不存在"
else:
blogs = Article.query.all()
result_data = []
for leave in blogs:
one = self.create_data(leave)
result_data.append(one)
self.result['method'] = 'get'
self.result['data'] = result_data
return jsonify(self.result)
def delete(self, post_id):
"""
负责删除数据
:return: 返回数据保存的状态,200:保存成功,400:保存失败
"""
self.result["method"] = "delete"
if post_id:
leave = Article.query.get(int(post_id))
if leave is not None:
try:
db.session.delete(leave)
db.session.commit()
self.result["code"] = 200
except:
self.result["code"] = 400
else:
self.result["code"] = 400
self.result["msg"] = "该文章不存在"
else:
blogs = Article.query.all()
result_data = []
for leave in blogs:
one = self.create_data(leave)
result_data.append(one)
return jsonify(self.result)