Phát triển phần mềm với Claude Code
Dani Zysman
AI Curriculum Manager @ DataCamp

music-analytics-api/
app.py # API hiện có (cập nhật để đăng ký db_routes)
routes.py # Các route hiện có
models.py # Mô hình Artist/Album
db_routes.py # <- Blueprint mới dùng cơ sở dữ liệu
chinook.db
test_routes.py
CLAUDE.md
> Tạo blueprint db_routes.py mới với một endpoint tại
/artists/<artist_id>/albums trả về toàn bộ album của
một nghệ sĩ cụ thể dưới dạng JSON từ chinook,db. Đăng ký nó với @app.py
1. db_routes py - Flask Blueprint mới với:
- hàm trợ giúp get_db_connection() để kết nối chinook.db
- Thêm endpoint truy vấn cơ sở dữ liệu lấy tất cả album của một nghệ sĩ cụ thể
- Trả về JSON với các trường AlbumId, Title và ArtistId
2. Cập nhật app.py
- Đăng ký blueprint để bật endpoint mới
Endpoint sẽ trả về 404 nếu nghệ sĩ không tồn tại,
và trả về danh sách album đã sắp xếp theo title dưới dạng JSON.
@app.route("/artists/<int:artist_id>/albums")
def get_artist_albums(artist_id):
conn = get_db()
artist = conn.execute("SELECT ... WHERE ArtistId = ?", ...)
albums = conn.execute("SELECT ... WHERE ArtistId = ?", ...)
conn.close()
return jsonify({"artist": ..., "albums": [...]})
$ python app.py & PID=$! && sleep 3 && curl http://127.0.0.1:5000/artists/1/albums
&& kill $PID
127.0.0.1 "GET /artists/1/albums HTTP/1.1" 200
[
{
"album_id": 1,
"artist_id": 1,
"title": "For Those About To Rock We Salute You"
},
{
"album_id": 4,
"artist_id": 1,
"title": "Let There Be Rock"
}
]
{"albums": []} rỗngfrom pydantic import BaseModel
from typing import List
class Album(BaseModel):
id: int
title: str
class ArtistAlbums(BaseModel):
artist_id: int
albums: List[Album]
> Thêm kiểm tra Pydantic vào @db_routes.py. Trả về 404 kèm thông điệp nếu
artist không tồn tại hoặc không có album.
Xong! Đã thêm kiểm tra Pydantic vào db_routes.py:
Thay đổi:
- Thêm model Album (album_id, title, artist_id)
- Trả về 404 "Artist not found" nếu artist không tồn tại
- Trả về 404 "Artist has no albums" nếu artist không có album
- Kiểm tra từng album theo model Album trước khi trả về
- Trả về 400 khi lỗi kiểm tra
Phản hồi:
- 404 "Artist not found"
- 404 "Artist has no albums"
- 200 với dữ liệu album đã kiểm tra
Phát triển phần mềm với Claude Code