Code-Along 1: API Design and DynamoDB Table Design

What You'll Learn

  • How to design effective API endpoints for your project
  • How to design DynamoDB tables to support your API
  • Hands-on experience applying API design principles
  • How to implement best practices for DynamoDB table design

What is a Code-Along?

Code-Alongs are live experiences taught by our expert instructors designed to prepare you for concepts found in the sprint challenges. Code-Alongs are your opportunity to work on complex job-ready problems in a live and engaging environment.

Code-Alongs are live classes 50 minutes in length designed to offer deeper insights into learning your core competencies and are offered seven days a week in the morning, afternoon, and evening.

Because Code-Alongs delve deeper into a core competency, you will need to come to class prepared to have the best experience.

Key Concepts for This Code-Along

API Design Fundamentals

An API (Application Programming Interface) defines how a client interacts with a server. In this Code-Along, we'll focus on designing RESTful APIs for your project. Some key concepts to understand include:

  • Resources: Entities exposed by your API (e.g., users, products, orders)
  • Endpoints: URLs that represent resources and actions (e.g., /users, /products/{id})
  • HTTP Methods: Standard operations like GET, POST, PUT, DELETE
  • Request/Response Bodies: The data sent to and from your API
  • Status Codes: Standardized responses that indicate success or failure

Here's an example of a well-designed REST API endpoint:

// GET /users/{userId}
// Response body:
{
  "userId": "123",
  "username": "johndoe",
  "email": "john@example.com",
  "createdAt": "2023-06-15T14:30:00Z"
}

// POST /users
// Request body:
{
  "username": "newuser",
  "email": "new@example.com",
  "password": "securePassword123"
}
// Response:
{
  "userId": "456",
  "username": "newuser",
  "email": "new@example.com",
  "createdAt": "2023-07-01T10:15:00Z"
}

DynamoDB Table Design Principles

DynamoDB is a NoSQL database that requires a different approach to table design compared to traditional relational databases:

  • Single-Table Design: Often, you'll store multiple entity types in a single table
  • Access Pattern Driven: Design tables based on how you'll query the data
  • Partition Key Selection: Choose keys that distribute data evenly
  • Sort Key Usage: Use sort keys to organize related items together
  • Composite Attributes: Combine values to create unique identifiers

Example DynamoDB table design for a blog application:

// Table name: BlogApp
// Primary key: PK (partition key), SK (sort key)

// User item
{
  "PK": "USER#123",
  "SK": "PROFILE",
  "username": "blogger1",
  "email": "blogger1@example.com"
}

// Blog post item
{
  "PK": "USER#123",
  "SK": "POST#2023-07-01",
  "title": "DynamoDB Best Practices",
  "content": "Here are some tips for designing DynamoDB tables..."
}

// Comment on a post
{
  "PK": "POST#456",
  "SK": "COMMENT#789",
  "userId": "USER#123",
  "content": "Great post!"
}

During This Code-Along

In this session, you'll work through a practical example of designing APIs and DynamoDB tables for a real application. You'll learn how to:

  • Translate user stories into API endpoints
  • Design request and response models for your API
  • Create a DynamoDB table schema that supports your API requirements
  • Implement access patterns efficiently with proper key design
  • Consider performance implications of your design choices

The example application will demonstrate various access patterns including:

  • Retrieving single items by ID
  • Querying related items (e.g., all posts by a user)
  • Filtering items based on attributes
  • Creating, updating, and deleting items

We'll also cover how to handle common challenges like:

  • Modeling one-to-many relationships
  • Implementing efficient searching capabilities
  • Managing data consistency in a NoSQL environment
  • Handling composite keys and secondary indexes

Starter Code

Download or clone the starter code repository for this Code-Along session.

Starter Code

Solution Code

The completed solution for reference after the Code-Along session.

Solution Code

Schedule a Code-Along

Book a live Code-Along session with an instructor.

Schedule Now

Preparation Checklist

The best Code-Along experiences happen when you are ready before coming to class. Your instructors created a starting point and a solution for each of your Code-Alongs to ensure you have what you need to succeed.

Before attending this Code-Along, please make sure you:

  • Reviewed the core competencies from Module 2 (API Design) and Module 3 (DynamoDB Table Design)
  • Watched the guided projects for both modules
  • Completed the checks for understanding
  • Finished your module projects
  • Downloaded or cloned the starter code repository

API Design Module

Review the API Design module content before attending this Code-Along.

Go to Module

DynamoDB Table Design Module

Review the DynamoDB Table Design module content before attending this Code-Along.

Go to Module