Skip to main content

Command Palette

Search for a command to run...

06 - API Gateway development

Published
2 min read
S

I am a techie who has coded/developed/lead app development for almost 15 years. I had experience in developing back end systems,database applications,data warehouse applications. I had experience in following technologies - C#, ASP.NET,PYTHON,SQL,SQL SERVER,ORACLE,POSTGRES,AWS,AZURE

In the last post we have seen the importance of having API-Gateway. Today we shall be developing an API Gateway Code to handle the requests and connect with other services. The response of the services will be returned to the applications.

We shall create a project API-Gateway and install below mentioned requirements

fastapi==0.70
PyJWT==1.7.1
uvicorn[standard]==0.15
requests==2.26.0
backoff==1.11.1
hash

Now using a fastapi template like our previous project API-Backend lets build an endpoint /register which will help any applications like web or mobile to call the API-Gateway and sign up an applicant Following will be the code for the end point

@router.post("/register", response_model=RegistrationResponseModel, tags=[router_tag])
def register(registration: CreateRegistrationModel, request: Request):
    h1 =  HashHandler()

    hash_password = h1.hash_password_to_hex_string(registration.password)
    applicant = request_handler.post(url=f"{config.API_BACKEND_URL}/applicant/create",
                                    data=json.dumps(
                                            {
                                                "username": registration.username,
                                                "password": hash_password,
                                                "firstname": registration.firstname,
                                                "lastname": registration.lastname
                                            }
                                    ),
                                    raise_exception=HTTPException(status_code=status.HTTP_424_FAILED_DEPENDENCY,
                                                                  detail=f"There was a problem retrieving customer data.")

                                    )
    return applicant

As we can see the API-Gateway makes a call to API-Backend at end point /applicant/create/ . Following will be the payload for the API end point

 {
                                                "username": registration.username,
                                                "password": hash_password,
                                                "firstname": registration.firstname,
                                                "lastname": registration.lastname
 }

The complete code is present in following location

Now lets trigger the end point of API-Gateway and see if it creates an applicant in backend Following is the response of end point. As you see it has HTTP status code 200 which means the call is successful and provides the response of the object created in database

image.png

We can check in the backend and see that the object is created as shown below

image.png

This program shows us how to build an API-Gateway which manages the incoming traffic and is the only public micro service. Rest of the micro services are publicly exposed

More from this blog

Website of Srikanth Venkata

15 posts