Apispec对Starlette的支持
starlette-apispec的Python项目详细描述
Easy APISpec integration for Starlette
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)
Contributing
prs欢迎!