Swagger UI for Pip.Services in Python
Project description
Swagger UI for Python
This module is a part of the Pip.Services polyglot microservices toolkit.
The swagger module provides a Swagger UI that can be added into microservices and seamlessly integrated with existing REST and Commandable HTTP services.
The module contains the following packages:
- Build - Swagger service factory
- Services - Swagger UI service
Use
Install the Python package as
pip install pip-services3-swagger
Develop a RESTful service component. For example, it may look the following way.
In the register
method we load an Open API specification for the service.
You can also enable swagger by default in the constractor by setting _swagger_enable
property.
class MyRestService(RestService):
def __init__(self):
super();
self._base_route = "myservice"
self._swagger_enable = True
def __greeting(self):
name = bottle.request.query.get('name')
response = "Hello, " + name + "!"
return self.send_result(result)
def register(self):
self.register_route(
'get', '/greeting',
ObjectSchema(True)
.with_required_property("name", TypeCode.String),
self.__greeting
)
self.register_open_api_spec_from_file('./pip_services3_swagger/services/myservice.yml')
The Open API specification for the service shall be prepared either manually or using Swagger Editor
openapi: '3.0.2'
info:
title: 'MyService'
description: 'MyService REST API'
version: '1'
paths:
/myservice/greeting:
get:
tags:
- myservice
operationId: 'greeting'
parameters:
- name: correlation_id
in: query
description: Correlation ID
required: false
schema:
type: string
- name: name
in: query
description: Name of a person
required: true
schema:
type: string
responses:
200:
description: 'Successful response'
content:
application/json:
schema:
type: 'string'
Include Swagger service into config.yml
file and enable swagger for your REST or Commandable HTTP services.
Also explicitely adding HttpEndpoint allows to share the same port betwee REST services and the Swagger service.
---
...
# Shared HTTP Endpoint
- descriptor: "pip-services:endpoint:http:default:1.0"
connection:
protocol: http
host: localhost
port: 8080
# Swagger Service
- descriptor: "pip-services:swagger-service:http:default:1.0"
# My RESTful Service
- descriptor: "myservice:service:rest:default:1.0"
swagger:
enable: true
Finally, remember to add factories to your container, to allow it creating required components.
from pip_services3_rpc.build.DefaultRpcFactory import DefaultRpcFactory
from pip_services3_swagger.build.DefaultSwaggerFactory import DefaultSwaggerFactory
# ...
class MyProcess(ProccesContainer):
def __init__(self):
super(MyProcess, self).__init__("myservice", "MyService microservice")
self._factories.add(DefaultRpcFactory())
self._factories.add(DefaultSwaggerFactory())
self._factories.add(MyServiceFactory())
# ...
Launch the microservice and open the browser to open the Open API specification at http://localhost:8080/greeting/swagger
Then open the Swagger UI using the link http://localhost:8080/swagger. The result shall look similar to the picture below.
Develop
For development you shall install the following prerequisites:
- Python 3.7+
- Visual Studio Code or another IDE of your choice
- Docker
Install dependencies:
pip install -r requirements.txt
Run automated tests:
python test.py
Generate API documentation:
./docgen.ps1
Before committing changes run dockerized build and test as:
./build.ps1
./test.ps1
./clear.ps1
Contacts
The library is created and maintained by:
- Sergey Seroukhov
- Danil Prisiazhnyi
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file pip_services3_swagger-3.0.2.tar.gz
.
File metadata
- Download URL: pip_services3_swagger-3.0.2.tar.gz
- Upload date:
- Size: 5.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.26.0 setuptools/57.4.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a364952736db64006d922af3e7a306ebb3971ec68d1dc07aeadddb5426df4464 |
|
MD5 | 75d465c2043ec947f0bb3c97e4b52e60 |
|
BLAKE2b-256 | ce1fd4860f8cbddbd265a71722a15d55c8472b2deda8feec681f9b19fcbe5095 |