Apispec对Starlette的支持

starlette-apispec的Python项目详细描述


Easy APISpec integration for Starlette
TravisCodecovPyPIPyPI - Python Version
fromapispecimportAPISpecfromapispec.ext.marshmallowimportMarshmallowPluginfromstarlette.applicationsimportStarlettefromstarlette_apispecimportAPISpecSchemaGeneratorapp=Starlette()schemas=APISpecSchemaGenerator(APISpec(title="Example API",version="1.0",openapi_version="3.0.0",info={"description":"explanation of the api purpose"},plugins=[MarshmallowPlugin()],))@app.route("/schema",methods=["GET"],include_in_schema=False)defschema(request):returnschemas.OpenAPIResponse(request=request)

Installation

pip install -U starlette-apispec

或者您也可以这样做

poetry add starlette-apispec

About

这个库帮助您轻松地记录用starlette构建的rest api。

Starlette是一个轻量级asgi框架/工具包, 这是构建高性能异步服务的理想选择。

APISpec支持OpenApi Specification 它还有一些有用的插件,比如marshmallow支持。

支持的版本:^1.0.0

Usage

这个例子包括marshmallow集成

fromapispecimportAPISpecfromstarlette.applicationsimportStarlettefromstarlette.endpointsimportHTTPEndpointfromstarlette.testclientimportTestClientfromstarlette_apispecimportAPISpecSchemaGeneratorapp=Starlette()schemas=APISpecSchemaGenerator(APISpec(title="Example API",version="1.0",openapi_version="3.0.0",info={"description":"explanation of the api purpose"},))@app.websocket_route("/ws")defws(session):"""ws"""pass# pragma: no cover@app.route("/users",methods=["GET","HEAD"])deflist_users(request):"""
    responses:
    200:
        description: A list of users.
        examples:
        [{"username": "tom"}, {"username": "lucy"}]
    """pass# pragma: no cover@app.route("/users",methods=["POST"])defcreate_user(request):"""
    responses:
    200:
        description: A user.
        examples:
        {"username": "tom"}
    """pass# pragma: no cover@app.route("/orgs")classOrganisationsEndpoint(HTTPEndpoint):defget(self,request):"""
        responses:
        200:
            description: A list of organisations.
            examples:
            [{"name": "Foo Corp."}, {"name": "Acme Ltd."}]
        """pass# pragma: no coverdefpost(self,request):"""
        responses:
        200:
            description: An organisation.
            examples:
            {"name": "Foo Corp."}
        """pass# pragma: no cover@app.route("/schema",methods=["GET"],include_in_schema=False)defschema(request):returnschemas.OpenAPIResponse(request=request)

More documentation

这个包基本上是一个代理,所以如果你想知道怎么做, 以下是您需要的资源:

Starlette documentation

APISpec documentation

Testing

  1. 复制回购协议
  2. 激活venv. venv/bin/activate
  3. 安装依赖项
poetry install
  1. 运行测试
./scripts/test

Contributing

prs欢迎!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java OnClick用于ListView中的特定项   java如何多次循环相同的TestNG测试。包括课前和课后   java如何在Codenameone中设置BrowserComponent浏览器窗口大小   java Socketchannel始终为空   java以编程方式向JavaFX WebEngine历史添加新条目   java Hibernate+Spring与Oracle一起使用分层查询(从+连接方式开始)   Java中的安卓 getView和Beacon(Estimote)问题   计时器如何在java中设置暂停选项   java为什么输入1000000000000的输出不正确?   java如何在程序执行期间更改log4j2中的日志记录级别   java阻止代码引发XML异常   未找到媒体类型为application/json的java JAX RS MessageBodyWriter   java如何将BuffereImage中的特定颜色(0xFF00FF)设置为透明?   java如何列出web元素,如果网页中没有特定链接的id,如何单击网页中的特定链接?   在Java中读取txt文件时获取EOFEException   java如何避免为每个视图添加inject方法?   JavaSpringController:Facebook上类似文章的永久链接   java在尝试执行脚本时遇到错误“net.serentiybdd.core.exceptions.serentitymanagedexception:No session ID”