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)

Defining Our Models

Before we go into the implementation, we need to first define and understand the fields that we will be working with. We will cover two essential models: User and Recipe. Models are like schemas in the database. A model is a class and can be instantiated. It contains attributes that correspond to fields in database schemas.

The user model

The user model will be mapped to the user table in the database. The fields and methods we defined for our user model are as follows:

  • id: The identity of a user.
  • username: The username of the user. The maximum length allowed is 80 characters. It can't be null and is a unique field.
  • email: The user's email. The maximum length allowed is 200. It can't be blank and is a unique field.
  • password: The user's password. The maximum length allowed is 200.
  • is_active: This is to indicate whether the account is activated by email. It is a Boolean field with a default value of False.
  • recipes...