当前位置: 首页 > news >正文

杭州建设局网站首页 柳公司官网优化

杭州建设局网站首页 柳,公司官网优化,石家庄做网站哪家公司好,济南好的网站建设公司排名flask-smorest 简介 flask-smorest: 基于Flask/Marshmallow的REST API框架 flask-smorest 是一个用于创建于数据库无关的REST API的架库。 它使用Flask作为Web服务器,并使用marsmallow对数据进行序列化和反序列化。(类似于drf) 快速入门 flask-smorest对代码应…

flask-smorest

简介

flask-smorest: 基于Flask/Marshmallow的REST API框架

flask-smorest 是一个用于创建于数据库无关的REST API的架库。

它使用Flask作为Web服务器,并使用marsmallow对数据进行序列化和反序列化。(类似于drf)

快速入门

flask-smorest对代码应该如何结构化做了一些设定。应用程序应该在Blueprint中进行拆分。可以使用基本的Flask视图函数,但通常最好使用Flask MethodView。

Marshmallow Schema被用来序列化参数和响应。请求和响应体被序列化为JSON。一个视图函数只有一个成功的响应类型和状态代码。

所以在使用 flask-smorest 前建议先看看 Marshmallow 库

代码示例

首先用Flask应用程序实例化一个Api。

from flask import Flask
from flask.views import MethodView
from marshmallow import Schema, fields, post_load
from flask_smorest import Api, Blueprint, abortapp = Flask(__name__)api = Api(app)  # 注册 flask_smorest

定义一个marshmallow Schema类来输出model

class User:def __init__(self, name, age):self.name = nameself.age = ageself.c_time = datetime.datetime.now()class UserSchema(Schema):name = fields.String()age = fields.Integer()c_time = fields.DateTime()

实例化一个蓝图(Blueprint)

blp = Blueprint('user', 'user', url_prefix='/user')

使用MethodView类来组织资源(resources),用Blueprint.argumentsBlueprint.response来装饰视图方法,指定请求反序列化和响应序列化。

使用abort返回错误,传递错误处理程序(handle_http_exception)使用的kwargs来建立错误响应。

def example(self):if some_condition:abort(400, message='Invalid request')  # 终止请求并返回400错误响应else:# 处理请求的逻辑      

错误处理的另一种方案

1. 通过Exception定义错误类
class BaseCustomException(Exception):def __init__(self, msg):self.msg = msgdef show(self):return self.msgclass TipResponse(BaseCustomException):"""@attention: 提示类响应"""def __init__(self, msg, code=400, status=400):self.code = codeself.status = statussuper().__init__(msg)
2. flask 中注册该错误类型
def init_exception(app: Flask):logger = app.logger@app.errorhandler(TipResponse)def tip_handler(error: TipResponse):"""@attention: 提示"""return BaseResponse(message=error.msg,status=error.status,code=error.code,).asdict()  # 转换成字典返回  dataclass 包的用法
3. 使用
def example(self):if some_condition:raise TipResponse("error info")# 终止请求并返回400错误响应else:# 处理请求的逻辑    

最后,在API中注册蓝图

api.register_blueprint(blp)

使用实例

class UserQuantityView(MethodView):@blp.doc(tags=[v1.name], description="批量上传用户", summary="批量上传用户")@blp.arguments(HeaderBaseSchema, location='headers')@blp.arguments(CreateQuantityUserParserSchema, location="files")@blp.response(200, BaseResponseSchema)def post(self, headers: dict, files: dict):"""批量上传用户"""data = user_service.bulk_create(files)return BaseResponse(data=data)@blp.doc来定义了一些描述信息,包括标签、描述和摘要。
@blp.arguments装饰器用于定义函数参数的验证和转换规则,其中HeaderBaseSchema用于验证和转换headers参数,CreateQuantityUserParserSchema用于验证和转换files参数。
@blp.response装饰器用于定义函数的响应结构,这里返回的是一个HTTP状态码为200的BaseResponseSchema。
http://www.yayakq.cn/news/964959/

相关文章:

  • 科技作文长春关键词优化排名
  • 建设企业网站首页年报申报入口
  • 服务好的南昌网站制作vi设计品牌案例ppt
  • 创意广告设计网站无忧中英繁企业网站系统通用版
  • 南山最专业的网站建设电子商务网站登录
  • 360网站制作wordpress批量扫描弱口令工具
  • 怎么做网站网页wordpress头像上传插件
  • 上海网站设计制作公司网页制作成品
  • 学生模拟网站开发项目广州智能模板建站
  • pc端网站开发总结wordpress简约自适应主题
  • 怎样看网站建设沈阳建设工程项目审批
  • 重庆互联网网站建设网页游戏用什么开发
  • 小米网站的建设目的有什么做外贸的网站
  • 天津网站建设培训网站是做流程
  • 做移动网站优化网站建设项目团队
  • 淘宝详情页做的比较好的网站seo实战密码怎么样
  • 网站建设都 包括哪些驾校官方网站 模板
  • 网站运营作用成都有什么好玩的景点推荐
  • 江苏汇算清缴在哪个网站做网页设计电商网站
  • 广东城乡住房建设部网站罗湖网站建设罗湖网站设计
  • 杭州企业网站设计模板wordpress网页设计
  • 一个做服装品牌的网站wordpress 用户量
  • 设计师必逛网站排名社交软件开发费用
  • 二手站网站怎做t型布局网站实例
  • 校园网站建设整改建议无锡微信网站建设
  • 卖机械设备什么网站做推广好网站建设中什么是一栏
  • 哪里找专业做网站的公司网站建设图片滑动代码
  • 怎么自己创建一个网站手机网站制作费用是多少
  • 做静态网站软件仿it资讯类网站源码
  • 昆明网站开发公司哪家好一个产品有两个品牌怎么做网站