bulletin board API
1.0.0
教育目的で最小限の実行可能な掲示板 REST API を作成します。
すべてのタグ、投稿、ユーザーのリストを取得する
リスト内で検索する
ユーザー登録
登録ユーザーは次のことができます。
新しい投稿を追加する
既存の投稿にコメントする
投稿とコメントを削除および編集する
PHP 8.1+
ララベル10
作曲家
MySQL
POST
/api/v1/auth/register
登録する名前 | タイプ | データ型 | 説明 |
---|---|---|---|
名前 | 必須 | 弦 | 名前 |
ニックネーム | 必須 | 弦 | 人間が読める識別子 |
電子メール | 必須 | 弦 | 電子メールアドレス |
パスワード | 必須 | 弦 | パスワード |
パスワード_確認済み | 必須 | 弦 | パスワードの確認 |
201
CREATED
{ "access_token", "token_type": "Bearer" }
POST
/api/v1/auth/login
ログイン名前 | タイプ | データ型 | 説明 |
---|---|---|---|
電子メール | 必須 | 弦 | 電子メールアドレス |
パスワード | 必須 | 弦 | パスワード |
200
OK
{ "access_token", "token_type":"Bearer" }
POST
/api/v1/auth/logout
ログアウト鍵 | 価値 |
---|---|
認可 | ベアラー {トークン} |
204
NO CONTENT
GET
/api/v1/profile
認証されたユーザープロファイルを取得します鍵 | 価値 |
---|---|
認可 | ベアラー {トークン} |
200
OK
{ "data": { "user_id", "name", "nickname", "email", "created_at", "updated_at", "posts_count", "comments_count" } }
GET
/api/v1/profile/posts
認証されたユーザーのプロフィールと投稿を取得します鍵 | 価値 |
---|---|
認可 | ベアラー {トークン} |
名前 | タイプ | データ型 | 説明 |
---|---|---|---|
ページごと | オプション | 整数 | ページあたりの投稿数 |
ページ | オプション | 整数 | ページ番号 |
200
OK
{ "data": [ { "post_id", "title", "price", "description", "created_at", "updated_at", "user_id", "user_nickname", "tags": [ { "tag_id", "name", "slug", }, ... ], "comments_count" } ], "links": {...}, "meta": {...}, "user": { "user_id", "name", "nickname", "email", "created_at", "updated_at" } }
GET
/api/v1/profile/comments
認証されたユーザーのプロフィールとコメントを取得します鍵 | 価値 |
---|---|
認可 | ベアラー {トークン} |
名前 | タイプ | データ型 | 説明 |
---|---|---|---|
ページごと | オプション | 整数 | ページごとのコメント数 |
ページ | オプション | 整数 | ページ番号 |
200
OK
{ "data": [ { "comment_id", "body", "created_at":, "updated_at", "post_id", "user_id", "user_nickname" }, ... ], "links": {...}, "meta": {...}, "user": { "user_id", "name", "nickname", "email", "created_at", "updated_at" } }
GET
/api/v1/users
すべてのユーザーを取得名前 | タイプ | データ型 | 説明 |
---|---|---|---|
q | オプション | 弦 | 検索クエリ |
ページごと | オプション | 整数 | ページあたりのユーザー数 |
ページ | オプション | 整数 | ページ番号 |
200
OK
{ "data": [ { "user_id", "name", "nickname", "email", "created_at", "updated_at", "posts_count", "comments_count" }, ... ], "links": {...}, "meta": {...} }
GET
/api/v1/users/{nickname}
ユーザーを取得200
OK
{ "data": { "user_id", "name", "nickname", "email", "created_at", "updated_at", "posts_count", "comments_count" } }
GET
/api/v1/users/{nickname}/posts
ユーザーとその投稿を取得します名前 | タイプ | データ型 | 説明 |
---|---|---|---|
ページごと | オプション | 整数 | ページあたりの投稿数 |
ページ | オプション | 整数 | ページ番号 |
200
OK
{ "data": [ { "post_id", "title", "price", "description", "created_at", "updated_at", "user_id", "user_nickname", "tags": [ { "tag_id", "name", "slug" }, ... ], "comments_count" }, ... ], "links": {...}, "meta": {...}, "user": { "user_id", "name", "nickname", "email", "created_at", "updated_at" } }
GET
/api/v1/users/{nickname}/comments
ユーザーとそのコメントを取得します名前 | タイプ | データ型 | 説明 |
---|---|---|---|
ページごと | オプション | 整数 | ページごとのコメント数 |
ページ | オプション | 整数 | ページ番号 |
200
OK
{ "data": [ { "comment_id", "body", "created_at":, "updated_at", "post_id", "user_id", "user_nickname" }, ... ], "links": {...}, "meta": {...}, "user": { "user_id", "name", "nickname", "email", "created_at", "updated_at" } }
GET
/api/v1/tags
すべてのタグを取得名前 | タイプ | データ型 | 説明 |
---|---|---|---|
q | オプション | 弦 | 検索クエリ |
200
OK
{ "data": [ { "tag_id", "name", "slug", "post_count" }, ... ] }
GET
/api/v1/tags/{slug}
タグとその投稿を取得します名前 | タイプ | データ型 | 説明 |
---|---|---|---|
ページごと | オプション | 整数 | ページあたりの投稿数 |
ページ | オプション | 整数 | ページ番号 |
200
OK
{ "data": [ { "post_id", "title", "price", "description", "created_at", "updated_at", "user_id", "user_nickname" }, ], "links": {...}, "meta": {...}, "tag": { "tag_id", "name", "slug" } }
GET
/api/v1/posts
すべての投稿を取得名前 | タイプ | データ型 | 説明 |
---|---|---|---|
q | オプション | 弦 | 検索クエリ |
ページごと | オプション | 整数 | ページあたりの投稿数 |
ページ | オプション | 整数 | ページ番号 |
200
OK
{ "data": [ { "post_id, "title", "price", "description", "created_at", "updated_at", "user_id", "user_nickname", "tags": [ { "tag_id", "name", "slug" }, ... ], "comments_count" }, ... ], "links": {...}, "meta": {...} }
GET
/api/v1/posts/{id}
投稿とそのコメントを取得します名前 | タイプ | データ型 | 説明 |
---|---|---|---|
ページごと | オプション | 整数 | ページごとのコメント数 |
ページ | オプション | 整数 | ページ番号 |
200
OK
{ "data": [ { "comment_id", "body", "created_at", "updated_at", "post_id", "user_id", "user_nickname" }, ... ], "links": {...}, "meta": {...}, "post": { "post_id", "title", "price", "description", "created_at", "updated_at", "user_id", "user_nickname", "tags": [ { "tag_id", "name", "slug" }, ... ] } }
POST
/api/v1/posts
新しい投稿を追加鍵 | 価値 |
---|---|
認可 | ベアラー {トークン} |
名前 | タイプ | データ型 | 説明 |
---|---|---|---|
タイトル | オプション | 弦 | タイトル |
価格 | オプション | フロート | 価格 |
説明 | オプション | 弦 | 説明 |
タグ[id] | オプション | 配列[整数] | タグIDの配列 |
201
CREATED
{ "data": { "post_id", "title", "price", "description", "created_at", "updated_at", "user_id", "user_nickname", "tags": [ { "tag_id", "name", "slug" }, ... ] }, }
PUT
/api/v1/posts/{id}
投稿を編集鍵 | 価値 |
---|---|
認可 | ベアラー {トークン} |
名前 | タイプ | データ型 | 説明 |
---|---|---|---|
タイトル | オプション | 弦 | タイトル |
価格 | オプション | フロート | 価格 |
説明 | オプション | 弦 | 説明 |
タグ[id] | オプション | 配列[整数] | タグIDの配列 |
200
OK
{ "data": { "post_id", "title", "price", "description", "created_at", "updated_at", "user_id", "user_nickname", "tags": [ { "tag_id", "name", "slug" }, ... ] }, }
DELETE
/api/v1/posts/{id}
投稿を削除します鍵 | 価値 |
---|---|
認可 | ベアラー {トークン} |
204
NO CONTENT
POST
/api/v1/posts/{id}/comments
投稿に新しいコメントを追加します鍵 | 価値 |
---|---|
認可 | ベアラー {トークン} |
名前 | タイプ | データ型 | 説明 |
---|---|---|---|
体 | 必須 | 弦 | コメントテキスト |
201
CREATED
{ "data": { "comment_id", "body", "created_at", "updated_at", "post_id", "user_id", "user_nickname", }, }
PUT
/api/v1/comments/{id}
コメントを編集鍵 | 価値 |
---|---|
認可 | ベアラー {トークン} |
名前 | タイプ | データ型 | 説明 |
---|---|---|---|
体 | 必須 | 弦 | コメントテキスト |
200
OK
{ "data": { "comment_id", "body", "created_at", "updated_at", "post_id", "user_id", "user_nickname", } }
DELETE
/api/v1/comments/{id}
コメントを削除します鍵 | 価値 |
---|---|
認可 | ベアラー {トークン} |
204
NO CONTENT
このリポジトリのクローンを作成し、プロジェクト フォルダーに移動します。
git clone https://github.com/AllaAverina/bulletin-board-APIcd Bulletin-board-API
依存関係をインストールします。
作曲家のインストール
MySQL を起動し、.env.example ファイル内のデータベースに接続するためのパラメータを変更して、次を実行します。
.env.example .env をコピー
コマンドを実行して移行を実行します。
php 職人の移行
または、データベースにダミー データを入力する場合は、次のようにします。
php 職人移行 --seed
Web サーバーを起動します。
php 職人サーブ
ブラウザで開きます (例: http://localhost:8000/api/v1/posts)
テスト用の新しいデータベースを作成し、.env.testing ファイルでそれに接続するためのパラメーターを変更して実行します。
php職人テスト
このリポジトリのクローンを作成し、プロジェクト フォルダーに移動します。
git clone https://github.com/AllaAverina/bulletin-board-APIcd Bulletin-board-API
依存関係をインストールします。
docker run --rm -u "$(id -u):$(id -g)" -v "$(pwd):/var/www/html" -w /var/www/html laravelsail/php82-composer:最新 コンポーザーのインストール --ignore-platform-reqs
.env ファイルを作成します。
cp.env.docker.examlpe.env
シェルのエイリアスを作成し、sail を実行します。
エイリアスセイル='[ -f セイル ] && sh セイル || sh ベンダー/bin/sail'sail up -d
コマンドを実行して移行を実行します。
帆職人の移住
または、データベースにダミー データを入力する場合は、次のようにします。
帆職人の移住 --seed
ブラウザで開きます (例: http://localhost/api/v1/posts)
コンテナを停止するには、以下を使用します。
帆止め
.env.testing ファイルを設定します。
cp .env.docker.testing .env.testing
テストを実行します。
帆職人試験