restful_model is an sqlalchemy auto generate REATful API
app.py
importsqlalchemyassafromsanicimportSanicfromsanic.constantsimportHTTP_METHODSfromrestful_modelimportDataBasefromrestful_model.extend.sanicimportApiViewmetadata=sa.MetaData() User=sa.Table( 'user', metadata, sa.Column( 'id', sa.Integer, autoincrement=True, primary_key=True, nullable=False, ), sa.Column( 'account', sa.String(16), nullable=False, ), sqlite_autoincrement=True, ) classUserView(ApiView): __model__=Userapp=Sanic(__name__) db=DataBase("sqlite:///db.db") app.db=db@app.listener('before_server_start')asyncdefsetup_db(app, loop): ifapp.db.loopisNone: app.db.loop=loopapp.db.engine=awaitapp.db.create_engine(echo=True) ifnotawaitapp.db.exists_table(User.name): awaitapp.db.create_table(User) userView=UserView.as_view(app.db) app.add_route(userView, "/user", HTTP_METHODS) app.add_route(userView, "/user/<id:int>", HTTP_METHODS) if__name__=="__main__": app.run(host="0.0.0.0", port=8000)curl test
$ # create $ curl -X POST http://127.0.0.1:8000/user \ -H 'content-type: application/json' \ -d '{"account": "test1" }'>{"status": 201, "message": "Insert ok!", "meta":{"count":1} } $ # select $ curl -X GET http://127.0.0.1:8000/user >{"status": 200, "message": "Query ok!", "data": [{"id": 1, "account": "test1" }] } $ # update $ curl -X PUT http://127.0.0.1:8000/user \ -H 'content-type: application/json' \ -d '{"where":{"id": 1}, "values":{"account": "test2"}}'>{"status": 201, "message": "Update ok!", "meta":{"count": 1 } } $ curl -X GET http://127.0.0.1:8000/user >{"status": 200, "message": "Query ok!", "data": [{"id": 1,"account": "test2"} ] } $ # delete $ curl -X DELETE http://127.0.0.1:8000/user \ -H 'content-type: application/json' \ -d '{"id": 1}'>{"status": 200, "message": "Delete ok!", "meta":{"count":1} } $ curl -X GET http://127.0.0.1:8000/user >{"status": 200, "message": "Query ok!", "data": [] }