There are currently no items in your shopping cart.

User Panel

Forgot your password?.

Advanced REST APIs with Flask and Python

Video Introducing this tutorial

Introduction :
Why you should take this course!
Introduction to this section
Access the e-book for Section 1 here!
Our project and endpoints
Reviewing the beginner course code
Simplifying our error handling
Refactoring our resources
Should we have unique names?
Adding basic type hinting
Adding custom JSON types
Using the current class as a type hint
Using Black for code formatting
Improving errors with constants
@classmethod across the board
Testing our API with Postman
Conclusion of this section

Serialization with Marshmallow :
Introduction to this section
Serialization with Marshmallow
Deserialization with Marshmallow
Migrating from virtualenv to Pipenv
Postman collection for this section
Using vanilla Marshmallow with the API
Introduction to Flask-Marshmallow
Adding items to our REST API
Adding stores to our REST API
Deduplicating error handling
Conclusion of this section

E-mail confirmations :
Introduction to this section
Introduction to e-mail confirmation
Postman collection for this section
Adding an activated property
Activating users manually
Telling users they are active
Setting up Mailgun
Sending e-mails with Mailgun (Part 1)
Sending e-mails with Mailgun (Part 2)
Creating our Mailgun library file
Using .env files in Flask
Adding more configuration to .env
Error handling in Mailgun
Conclusion of this section

Advanced e-mail confirmation :
Introduction to this section
Postman collection for this section
Creating the ConfirmationModel
Changes in our UserModel
Creating our ConfirmationResource
Updating our UserResource
Adding the last confirmation to the user schema
Fixing our
Cross-resource dependencies are (generally) bad
What are localisation and internationalisation?
Storing strings in config files
Creating a simple translation library
Updating our resources to use translations
Adding a new language to our API
What is Flask-Babel?
Common pitfalls and advice
Conclusion of this section

Postman documentation and tests :
Introduction to this section
Postman collection for this section
Collection and request descriptions
Recap of Postman environments
JavaScript tests in Postman
Running entire collections in Postman
Adding example requests and responses
Previewing our Postman documentation
Publishing our documentation page
More options for publishing documentation
Conclusion of this section

Image uploads :
Introduction to this section
Postman collection for this section
Installing Flask-Uploads
Config files in Flask
What are wsgi and Werkzeug?
Creating our image helper library
Creating our image schema
Creating our image upload resource
Trying out our image upload
Retrieving and deleting images
Another example: user avatars
Adding the avatar resource
Conclusion of this section

Database migrations :
Introduction to this section
Getting a PostgreSQL database
What's in our starter code?
Postman collection for this section
Connecting to our remote database
Initialising Flask-Migrate and Alembic
Creating our initial table structure
Our first database migration
Checking the Alembic script (important!)
Adding a new column with migrations
Problems that can happen while migrating
A word of caution!
Defining a SQLAlchemy naming convention
When should you read documentation?
Conclusion of this section

Third party login with OAuth :
Introduction to this lecture
Introduction to OAuth 2.0
What's in our starter code?
Postman collection for this section
Creating a GitHub OAuth App
Setting up our GitHub client
Our GithubLogin resource
What is Flask's g?
What is a tokengetter?
Finishing our GithubAuthorize resource
Adding some error handling
Setting user passwords
Using url_for with Flask-RESTful
Conclusion of this section

Payments with Stripe :
Introduction to this section
Setting up our Stripe account
What's in our starter code?
Postman collection for this section
Where do users pay?
After payment: receiving order data
Creating our OrderModel
Many-to-many relationships with SQLAlchemy
Using the Association Object in our Resourcee
Charging orders with Stripe
Calculating the amount and description
Testing our OrderResource
Creating a way to view existing orders
When things go wrong: error handling in Stripe
Security considerations in payments
Conclusion of this section

Bonus section :
Conclusion of the course
Bonus lecture: next steps and other resources