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)

UserSchema Design

Now we have learned why we need to use Schema and how we can define a schema, we will start to work on that in our Smilecook application. In the case of user registration, we will expect the user to fill in their information on a web form, and then send the details in JSON format to the server. Our Smilecook application will then deserialize it to be a User object, which can be worked on in our application.

We will, therefore, need to define a UserSchema class to specify the expected attributes in the JSON request coming from the frontend. We will need the following fields:

  • id: Use fields.Int() to represent an integer. In addition, dump_only=True means that this property is only available for serialization, not deserialization. This is because id is autogenerated, not passed in by the user.
  • username: Use fields.String() to represent a string and apply required=True to indicate that this property is mandatory. When the client sends JSON data without...