Autoplay
Autocomplete
Previous Lesson
Complete and Continue
PHP API PRO
API Fundamentals
How REST Works (11:23)
The Different Types of API (6:09)
What Are Resources? (3:52)
Resource Identifiers (4:55)
Representations (3:16)
Hypermedia APIs (3:33)
Introduction To Headers (8:35)
Statelessness (1:46)
The Project Setup (9:57)
Using Postman (4:05)
Postman Environment Variables
Connecting to the DB (2:17)
PHPStan Composer Script (4:12)
Creating Entities (9:52)
Collection Endpoints (13:09)
Item Endpoints (9:30)
Content-Type Middleware (17:21)
Refactoring to an Interface (8:48)
Dynamic Serialization Formats (7:29)
How’s it going so far?
Operations
Introduction to REST Operations (3:24)
GET Collection Theory Part 1 (3:00)
Idempotency (2:48)
Safe Operations (2:23)
GET Collection Theory Part 2 (7:24)
GET Item Theory (5:53)
POST Theory (7:46)
DELETE Theory (8:57)
PUT Theory (10:09)
PATCH Theory (5:49)
HEAD Theory (3:55)
OPTIONS Theory (7:01)
GET Collection Operations (4:33)
Postman Collections (6:26)
GET Item Operations (6:01)
POST Operations (19:07)
DELETE Operations (11:57)
PUT Operations (9:41)
PATCH Operations (8:48)
PHPStan Config (7:01)
Design and Documentation
Introduction to API Design and Documentation
API Development Approaches (1:47)
Code First API Development (5:02)
Design First API Development (6:06)
API First API Development (9:41)
Introduction to the Open API Specification (5:49)
Create an OAS using the Swagger Editor Part1 (6:58)
Create an OAS using the Swagger Editor Part2 (9:05)
Public, Private, and Partner APIs (2:11)
The Business: Jet-Fu.com (3:55)
Documenting Hypermedia (5:00)
Error Handling
API Error Handling
Problem Details RFC (3:23)
Documenting Error Responses (2:27)
Customized Error Handling (5:26)
Set the Default Error Handler (6:13)
Problem Details Body (6:02)
Problem Detail Enum (6:43)
Validating Entities (4:43)
Entity Validator (9:20)
Extracting Validation Errors (3:31)
Validation Constraints (4:05)
Validation Exception (6:13)
Problem Details Extensions (7:23)
Refactoring Inherited Code (3:51)
Problem Content Type (1:43)
Validation Groups (6:25)
Customized Serialization (2:15)
Logging Errors (2:16)
Monolog Logger (5:02)
Maintenance Mode (7:20)
503 Retry After (2:54)
Your Input Matters – Share Your Thoughts!
Related Resources
Custom Serializer (7:19)
Default Content Format (7:24)
Passenger Entity (3:36)
Route Grouping (3:38)
Create a Postman API (5:50)
Create the Passengers Table (4:53)
Creating Entity Relationships (8:36)
Create the Reservations Table (1:21)
Seeding The Database (3:37)
Documenting Reservation Operations (4:07)
Reservations Routing (6:02)
Reservations Controller (6:23)
Reservation Repository (6:26)
The Query Builder (6:30)
Creating Nested Resources (12:33)
Soft Deletes (12:18)
Retrieving Single Reservations (7:57)
Updating Reservations (14:39)
Pagination, Filtering, and Sorting
Introduction to Pagination (3:04)
Paginating a Query (6:04)
Pagination Query Parameters (5:20)
Creating Pagination Links (8:34)
Custom Count Queries (4:50)
Creating Pagination Metadata (3:04)
Pagination Metadata Object (2:53)
Pagination Metadata Factory (6:15)
Paginating Flights (6:56)
Query Filters (11:09)
Applying Dynamic Filters (3:18)
Counting Filtered Records (4:02)
Sorting Records (11:08)
Sorting Demonstration (4:49)
Reusable Sort Component (6:35)
Sorting Reservations (6:35)
Performance and Optimization
Introduction to Performance and Optimization
Database Indexes (5:26)
Avoiding DB ORM Pitfalls (6:02)
Checking DB Queries (4:50)
Query Caching (2:18)
Application Cache (6:06)
Choosing What to Cache (5:40)
Create a Cache Key (3:14)
Checking the Cache (5:09)
Add to the cache (5:29)
Route Middleware (4:20)
Refactor for Middleware (7:28)
Caching Considerations
Monitoring Cache Performance
Introduction to Http Caching (2:55)
Reverse Proxy Caching (9:13)
Http Cache Middleware (2:48)
Cache-Control (4:39)
Expires Header (2:56)
Vary Header (2:54)
Content Length (2:31)
Security
API Security
Using JWTs in PHP (6:53)
JWT Composition (3:24)
JWT Authentication Middleware (8:08)
Authenticating Tokens (4:50)
Json Web Key Sets (jwks) (4:04)
Decoding a JWT (2:53)
Auth User Object (5:40)
Introduction to Authorization (1:56)
Access Control Manager (5:26)
Roles and Permissions (4:33)
Checking Permissions (5:33)
Resource Ownership (3:14)
Checking Ownership (6:17)
Merging Permissions (1:15)
Permissions Middleware (12:33)
Rename 'can' to 'allows'
OAS Security Update
Final Check-In: How Was It?
Versioning
Introduction to Versioning (1:17)
Versioning Considerations
URI Versioning (3:59)
Header Versioning (3:32)
Media Type Versioning (2:52)
Documenting Change (2:39)
API Evolution - An Alternative to Versioning (8:02)
Deprecation Strategies
Sunset Headers (3:41)
How to do API Versioning: a talk with Phil Sturgeon
Your Learning Journey Continues – Enjoy 25% Off!
Testing APIs
Introduction to API Testing
Removing Owner ID from the Response (1:29)
Postman Test Setup (5:19)
Write Your First Test (10:12)
Schema Testing (12:24)
Mock Servers (6:27)
Schema Test Challenge (5:08)
Testing Updates (5:29)
Testing Deletes (1:14)
Testing 404s After Delete (3:05)
Testing Collections (5:15)
Postman Collection Runner (3:38)
Run on Postman CLI (5:39)
Generate CI/CD Scripts (5:49)
Performance Testing (7:09)
Congratulations - Here are your next steps... (1:14)
Testing Updates
Lesson content locked
If you're already enrolled,
you'll need to login
.
Enroll in Course to Unlock