qiudaozhang
Posted on June 10, 2022
假设我们需要管理用户的api key ,api secret。
生成model
python craft model ApiKey
在app/models,将会得到一个模型
""" ApiKey Model """
from masoniteorm.models import Model
class ApiKey(Model):
"""ApiKey Model"""
pass
我们填充一点需要的内容。
""" ApiKey Model """
from masoniteorm.models import Model
from masoniteorm.relationships import belongs_to
class ApiKey(Model):
"""ApiKey Model"""
__table__ = 'api_keys'
__fillable__ = ['id', 'api_key', 'api_secret', 'uid']
# 它属于某个用户的,这里要定义一个反向关联的模型
@belongs_to('uid', 'id') # 第一个字段是api_keys的存储的值,第二个id代表了users表里面的id
def user(self):
from app.models.User import User
return User
生成迁移文件
python craft migration create_api_keys_table --create api_keys
我们填充下字段的描述
"""CreateApiKeysTable Migration."""
from masoniteorm.migrations import Migration
class CreateApiKeysTable(Migration):
def up(self):
"""
Run the migrations.
"""
with self.schema.create("api_keys") as table:
table.increments("id")
table.string("api_key").unique()
table.string("api_secret").unique()
table.integer("uid").unsigned()
table.timestamps()
def down(self):
"""
Revert the migrations.
"""
self.schema.drop("api_keys")
执行迁移
python craft migrate
创建一个控制器
接下来创建一个API Controller,测试我们的逻辑
python craft controller api/ApiKeyController -a
接下来注册路由
routes/api.py
from masonite.routes import Route
ROUTES = [
...
Route.api('apikeys', 'api.ApiKeyController')
]
控制器代码改写
from masonite.authentication import Auth
from masonite.controllers import Controller
from masonite.request import Request
from masonite.views import View
from app.models.ApiKey import ApiKey
class ApiKeyController(Controller):
def index(self, view: View):
return view.render("")
def show(self, view: View):
return view.render("")
def store(self, request: Request, auth: Auth):
api_key = request.input("api_key")
api_secret = request.input("api_secret")
obj = ApiKey()
obj.api_key = api_key
obj.api_secret = api_secret
obj.uid = auth.user().id
obj.save()
return {"code": 0, "message": "success"}
def update(self, view: View):
return view.render("")
def destroy(self, view: View):
return view.render("")
测试
数据库检查确认
确认无误,没问题,基本的逻辑就全走通了,剩下的根据需要添砖即可。
💖 💪 🙅 🚩
qiudaozhang
Posted on June 10, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.