No project description provided
Project description
FastAPI Soap
This package helps to create Soap WebServices using FastAPI (What?!?!)
Motivation
I know, FastAPI is a REST micro framework, but sometimes is needed to expose a Soap Interface on a already running FastAPI application for an legacy client/application that only supports, well, the Soap protocol...
Installation and dependencies
Only FastAPI, Pydantic and Pydantic XML are required.
First steps
from fastapi import FastAPI
from pydantic_xml import element
from fastapi_soap import SoapRouter, XMLBody, SoapResponse
from fastapi_soap.models import BodyContent
class Operands(BodyContent, tag="Operands"):
operands: list[float] = element(tag="Operand")
class Result(BodyContent, tag="Result"):
value: float
soap = SoapRouter(name='Calculator', prefix='/Calculator')
@soap.operation(
name="SumOperation",
request_model=Operands,
response_model=Result
)
def sum_operation(body: Operands = XMLBody(Operands)):
"""
Receives an Operands object and returns a Result object.
Args:
body (Operands): Operands object with a list of operands
"""
result = sum(body.operands)
return SoapResponse(
Result(value=result)
)
app = FastAPI()
app.include_router(soap)
if __name__ == '__main__':
import uvicorn # Any Python ASGI web server can be used
uvicorn.run("example.main:app")
(This script is complete, it should run "as is")
The WSDL is available on webservice root path for GET method.
GET http://localhost:8000/Calculator?wsdl
Examples
XML Request
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<Operands>
<!--Zero or more repetitions:-->
<Operand>1</Operand>
<Operand>2</Operand>
<Operand>3</Operand>
</Operands>
</soapenv:Envelope>
For this example, the sum_operation function will receive an Pydantic object as body
print(body)
# Output Operands(operands=[1.0, 2.0, 3.0])
print(body.operands)
# Output [1.0, 2.0, 3.0]
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
fastapi_soap-0.0.6.tar.gz
(7.9 kB
view hashes)
Built Distribution
Close
Hashes for fastapi_soap-0.0.6-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5624959fc7f22293ecba81905e62d112e5088f8bd706c22ca94f28e1a7dce251 |
|
MD5 | 7c79f04ab18bf868cf4cdfbf6a9c4893 |
|
BLAKE2b-256 | 13a13be3c1d15a4168c6145e3d5dc62949891eb67f3e6b84d74407c5962c0477 |