BookWell API Implementation and Test
シナリオ
背景: あなたは「BookWell」というオンライン書籍管理システムを開発しています。このシステムは、ユーザーが書籍の情報を追加、取得、更新、削除(CRUD操作)することを可能にします。システムはBasic認証とJWTを使用して、認証と認可を行います。
要件
- Basic認証: 管理者が書籍情報を管理するために、Basic認証を使用してAPIにアクセスする。
- CRUD操作: 書籍の追加、取得、更新、削除が可能なAPIを実装する。
- JWT認証: 一般ユーザーが書籍情報を取得するために、JWT認証を使用する。
問題1: Basic認証を使用したAPIの実装
管理者がBasic認証を使用して書籍情報を管理できるように、以下のAPIエンドポイントを実装してください。
- 書籍の追加 (POST /admin/books)
- 書籍の更新 (PUT /admin/books/{id})
- 書籍の削除 (DELETE /admin/books/{id})
問題2: CRUD操作の実装
一般ユーザーが書籍情報を取得できるように、以下のAPIエンドポイントを実装してください。
- 書籍の取得 (GET /books)
- 書籍の詳細取得 (GET /books/{id})
問題3: JWT認証の実装
一般ユーザーがJWTを使用して認証するための仕組みを実装してください。
- JWTの発行 (POST /auth/login)
- JWTを使用した書籍情報の取得 (GET /books, GET /books/{id})
Java
問題1: Basic認証を使用したAPIの実装
AdminBookController.java
問題2: CRUD操作の実装
UserController.java
問題3: JWT認証の実装
AuthController.java
Node.js (Express)
問題1: Basic認証を使用したAPIの実装
adminRoutes.js
問題2: CRUD操作の実装
userRoutes.js
問題3: JWT認証の実装
authRoutes.js
Go
問題1: Basic認証を使用したAPIの実装
main.go (Admin routes)
問題2: CRUD操作の実装
main.go (User routes)
問題3: JWT認証の実装
main.go (Auth routes)
テスト用Curlコマンドスクリプト (test.sh)
追加問題: EC2インスタンスでの公開
NginxまたはApacheを使用して、BookWell APIをEC2インスタンス上で公開してください。
要件
- EC2インスタンスの作成: AWS EC2インスタンスを作成し、必要なセキュリティグループ設定を行う。
- Webサーバーの設定: NginxまたはApacheをインストールし、APIアプリケーションを公開するための設定を行う。
- APIのデプロイ: BookWell APIアプリケーションをEC2インスタンス上にデプロイする。
- 公開とテスト: EC2インスタンスのパブリックIPアドレスを使用して、APIが公開されていることを確認する。
追加問題2: データベース操作の実装
BookWell APIにデータベース操作を追加し、書籍情報をデータベースに保存、更新、削除する機能を実装してください。
要件
- データベースの設定: PostgreSQLやMySQLなどのリレーショナルデータベースを使用してデータベースを設定する。
- データベース接続の実装: APIアプリケーションにデータベース接続を実装する。
- データベース操作の追加: 書籍情報の追加、取得、更新、削除をデータベースに対して行う機能を実装する。
エンドポイント
- 書籍の追加 (POST /admin/books)
- 書籍の取得 (GET /books)
- 書籍の詳細取得 (GET /books/{id})
- 書籍の更新 (PUT /admin/books/{id})
- 書籍の削除 (DELETE /admin/books/{id})