File size: 1,089 Bytes
4cefd33
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from fastapi import FastAPI
from pydantic import BaseModel
from typing import Union

app = FastAPI()

class CalculatorInput(BaseModel):
    num1: float
    num2: float
    operation: str

class CalculatorResponse(BaseModel):
    result: float
    operation: str

@app.post("/calculate", response_model=CalculatorResponse)
async def calculate(input_data: CalculatorInput):
    result = 0.0
    
    if input_data.operation == "add":
        result = input_data.num1 + input_data.num2
    elif input_data.operation == "subtract":
        result = input_data.num1 - input_data.num2
    elif input_data.operation == "multiply":
        result = input_data.num1 * input_data.num2
    elif input_data.operation == "divide":
        if input_data.num2 == 0:
            raise ValueError("Cannot divide by zero")
        result = input_data.num1 / input_data.num2
    else:
        raise ValueError("Invalid operation")
    
    return CalculatorResponse(result=result, operation=input_data.operation)

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)