Book Image

Python API Development Fundamentals

By : Jack Chan, Ray Chung, Jack Huang
Book Image

Python API Development Fundamentals

By: Jack Chan, Ray Chung, Jack Huang

Overview of this book

Python is a flexible language that can be used for much more than just script development. By knowing the Python RESTful APIs work, you can build a powerful backend for web applications and mobile applications using Python. You'll take your first steps by building a simple API and learning how the frontend web interface can communicate with the backend. You'll also learn how to serialize and deserialize objects using the marshmallow library. Then, you'll learn how to authenticate and authorize users using Flask-JWT. You'll also learn how to enhance your APIs by adding useful features, such as email, image upload, searching, and pagination. You'll wrap up the whole book by deploying your APIs to the cloud. By the end of this book, you'll have the confidence and skill to leverage the power of RESTful APIs and Python to build efficient web applications.
Table of Contents (12 chapters)


Flask-JWT-Extended is a user authentication package that provides the create_access_token function for making new access JWTs. It also provides the jwt_required decorator for protecting the API endpoints (for checking whether users have logged in). Also, the get_jwt_identity() function is provided to get the identity of a JWT in a protected endpoint. This allows us to know who the authenticated users are. This is an extremely useful package for user authentication.

Before we dive into the coming exercise, let's first discuss two very important key configurations that we will be using. They are as follows:

  • SECRET_KEY: This is the key for encrypting the message and generating the signature. We recommend that you use a complex string.
  • JWT_ERROR_MESSAGE_KEY: This is the key for the error message whenever there is an error. The default value is msg, but we are setting that to the message here.

We will work on the user login function together...