top of page

How to build Microservice with FastAPI

In this article, we will give you a step-by-step guide to build Microservice with FastAPI.


Microservices is an architectural style that structures an application as a collection of small, independent services that communicate with each other. This allows for greater flexibility and scalability, as well as improved maintainability and testability of the code.


FastAPI is a modern, fast, web framework for building APIs with Python 3.6+ based on standard Python-type hints. It is designed to be easy to use and high-performance, with automatic validation of request and response payloads and automatic generation of OpenAPI and JSON Schema documentation.


Here's an example of how you can build a microservice with FastAPI:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")def read_root():
    return {"Hello": "World"}

@app.get("/items/{item_id}")def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

This is a simple example that demonstrates the basic functionality of FastAPI. The first route, /, returns a simple JSON response with the message "Hello World". The second route, /items/{item_id}, accepts an item_id parameter and an optional q parameter and returns a JSON response with the values of these parameters.


FastAPI makes it easy to define the expected data types for the parameters in the route functions, and it automatically performs input validation and generates documentation for these parameters.


Now, let's take a look at how you can build a microservice with FastAPI in more detail.


Build Microservice with FastAPI

To build a microservice with FastAPI, you need to perform the following steps:


STEP 1: Install the FastAPI library by running the following command in your terminal/command prompt:

pip install fastapi

STEP 2: Create a new Python file, for example, main.py.


STEP 3: Import the FastAPI class from the fastapi library and create an instance of the FastAPI class:

from fastapi import FastAPI

app = FastAPI()

STEP 4: Define your endpoint functions, for example:

@app.get("/")def read_root():
    return {"Hello": "World"}

@app.get("/items/{item_id}")def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

The @app.get("/") and @app.get("/items/{item_id}") annotations are used to define two routes. The first route / returns a simple JSON response with a message. The second route /items/{item_id} accepts an item ID as a path parameter and an optional query parameter q. The read_item function returns a JSON response with the item ID and the value of the query parameter.


STEP 5: Run the microservice by calling uvicorn main:app --reload (assuming your main module is named main and your FastAPI instance is named app) in your terminal/command prompt. This will start the development server and make your microservice accessible at http://localhost:8000.


STEP 6: You can test your microservice by sending a GET request to the routes using a tool like curl or by using a browser.


Here's the complete code for the microservice:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")def read_root():
    return {"Hello": "World"}

@app.get("/items/{item_id}")def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

This is a simple example to get you started with building microservices with FastAPI. You can expand on this basic example by adding more routes, endpoint functions, and other functionality to build a more complex microservice.


FastAPI is a powerful tool for building microservices, and it provides a number of features that make it easy to build, test, and deploy microservices. By using FastAPI, you can take advantage of its automatic validation and documentation generation features to ensure that your microservices are well-documented, easy to use, and maintainable over time.


Frequently Asked Questions


What is FastAPI and why should I use it for building microservices?

FastAPI is a modern, fast (high-performance) web framework for building APIs with Python 3.6+ based on standard Python-type hints. It allows you to write APIs quickly and efficiently, with automatic validation of request and response payloads, improved performance, and easy-to-use syntax for defining endpoints and handling requests. It is a great choice for building microservices because it is fast, efficient, and has a low learning curve.

How do I create a new microservice with FastAPI?

To create a new microservice with FastAPI, you need to create a new Python file and import the FastAPI class from the fastapi library. Then, create an instance of the FastAPI class and define your endpoint functions using the @app.route annotation. Finally, run the microservice using the uvicorn command.


How do I define routes and endpoint functions in FastAPI?

Routes are defined using the @app.route annotation, followed by the endpoint function that handles incoming API requests. The endpoint function takes the request payload as input and returns a response payload. For example:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")def read_root():
    return {"Hello": "World"}

@app.get("/items/{item_id}")def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

How do I run a microservice built with FastAPI?

To run a microservice built with FastAPI, use the uvicorn command in your terminal/command prompt.

For example:

uvicorn main:app --reload

This will start the development server and make your microservice accessible at http://localhost:8000.


How do I test a microservice built with FastAPI?

You can test your microservice by sending a request to the endpoint using a tool like a curl or by using a browser. The response from the microservice will be displayed in the tool or browser.


Can I use FastAPI for building both simple and complex microservices?

Yes, FastAPI is a versatile framework that can be used for building both simple and complex microservices. The syntax for defining routes and handling requests is easy to use, and the framework provides advanced features like automatic validation and improved performance that can be used for building complex microservices.

0 comments

Recent Posts

See All
bottom of page