flask Development restful api

Standard methods are restful api http request,

get: Get a list

get <int: id>: acquiring a single data record

post: Add Data

put: modify data

delete: delete data

Related view processing code

from flask import jsonify,request
from app.api import api
from app.models.article import Article
##分页获取所有列表
@api.route('/article/',methods=['GET'])
def list():
    try:
        page=request.args.get('page',1, type=int)
        page_size=request.args.get('page_size',10,type=int)
        query = Article.query.limit(page_size).offset((page-1)*page_size).all()
        result_list=[item.to_json() for item in query]

        return jsonify(result_list)

    except Exception  as e:
        print(e)
        raise

##获取详细内容
@api.route('/article/<int:id>/',methods=['GET'])
def get_detail(id):
    model=Article.query.get_or_404(id)
    return jsonify(model.to_json())



@api.route('/article/',methods=['POST'])
def add_info():
    data=request.get_json(force=True)
    model=Article()
    model.desction=data['desction']
    model.title=data['title']
    model.add(model)
    return jsonify({"msg":"添加成功"})
    pass




##修改数据
@api.route('/article/',methods=['PUT'])
def modify():

    data = request.get_json(force=True)
    model = Article()
    model.id=data['id']
    model.desction = data['desction']
    model.title = data['title']
    model.modify(model)
    return jsonify({"msg": "修改成功"})

##删除数据
@api.route('/article/<int:id>/',methods=['DELETE'])
def delete_info(id):
    try:
        model = Article.delete_by_id(id)
        return jsonify({"message": "删除成功"})
    except Exception as e:
        return jsonify({"messge":str(e)})

 

mode where the relevant code:

from app.models.base import BaseModel,db
from datetime import datetime
from sqlalchemy import Column,String,Integer,Text,DateTime,ForeignKey
from sqlalchemy.orm import relationship
##文章类
class Article(BaseModel):

    __tablename__ ='article' ##数据库对应的表名
    desction=Column(String(256))
    title=Column(String(64),nullable=True)
    author=Column(String(64),default='未知作者')
    cover_img = the Column (String (128 )) 
    source_link_url = the Column (String (128 )) 
    Content = the Column (the Text) 
    view_count = the Column (Integer, default = 0)
     # sort_id the Column = (Integer, default = 99) 
    # #relationship designated by the user solid model corresponding relationship, category herein refers to an entity in the preparation of a class name, case sensitive 
    category = relationship ( ' the category ' )
     # # category.id in the variable name refers to a category sentence received category, id column name 
    # #ForeignKey represent foreign keys 
    categroy_id the Column = (Integer, a ForeignKey ( ' category.id ' )) 


    DEF  the __init__  (Self):
        self.addtime=datetime.now()
    ##添加数据
    def add(self,article):
        try:
            db.session.add(article)
            db.session.commit()
        except Exception as e:

            db.session.rollback()
            print(e)
            raise e

    ##修改数据    
    def modify(self,article):
        try:
            data=Article.query.filter(Article.id==article.id).first()
            data.title=article.title
            data.desction=article.desction

            db.session.commit()
        except Exception as e:

            db.session.rollback()
            print(e)
            raise e

    
    ##删除数据
    @classmethod
    def delete_by_id(_cls,id):
        db.session.query(Article).filter(Article.id==id).delete()
        db.session.commit()

# 将list转为dict,方便jsonify序列化 def to_json(self): dict = self.__dict__ if "_sa_instance_state" in dict: del dict["_sa_instance_state"] return dict

 

app_init initialize the relevant code:

Import api app.api from 
## designated api visited prefix
app.register_blueprint (api, url_prefix = '/ api / v1 /')

It should be noted that, url in the case and /, if not exactly spell spelling there may be prompted 404

Run your browser and enter access http://127.0.0.1:5000/api/v1/article/

Here interface test tool is recommended to test the postman

Guess you like

Origin www.cnblogs.com/dongml/p/10958248.html