カテゴリ API
ブログのカテゴリ(大分類)を管理するエンドポイントです。
blog.category_id から参照されるほか、blog_builder がカテゴリ名から記事テンプレートを
選択するため、カテゴリ名はブログの見た目にも影響します(詳細は category テーブル を参照)。
記事(article)はカテゴリを持ちません。
POST /v1/categories
概要
カテゴリを新規作成します。
リクエストとレスポンス
ヘッダー
リクエストヘッダー
Content-Type: application/json
レスポンスヘッダー
Content-Type: application/json
URI
リクエストボディ
| フィールド | データ型 | 必須 | 備考 |
|---|---|---|---|
| name | string | ◯ |
レスポンス
201 Created
例外処理
| 説明 | ステータスコード | ステータス名 |
|---|---|---|
| リクエストボディが不正 | 422 | Unprocessable Entity |
| 内部サーバーエラー | 500 | Internal Server Error |
処理フロー
- リクエストを受信する
- リクエストボディをバリデーションする
- カテゴリを作成して保存する
- 作成したカテゴリを返す
flowchart TD
Start([POST /v1/categories]) --> Validate[リクエストバリデーション]
Validate -->|invalid| E422[422 Unprocessable Entity]
Validate -->|valid| Save[DBに保存]
Save --> Success[201 Created]
GET /v1/categories
概要
カテゴリの一覧を取得します。
リクエストとレスポンス
URI
クエリパラメータ
| パラメータ | データ型 | 必須 | 備考 |
|---|---|---|---|
| page | number | 取得するページ番号。デフォルト: 1 |
|
| size | number | 1ページあたりの件数。デフォルト: 10 |
|
| order | enum | asc / desc(updated_at 基準)。デフォルト: desc |
リクエストボディ
なし
レスポンス
200 OK
{
"list": [
{
"id": "string",
"name": "string",
"created_at": 1234567890000,
"updated_at": 1234567890000
}
],
"current_page": 1,
"total_count": 10
}
例外処理
| 説明 | ステータスコード | ステータス名 |
|---|---|---|
| 内部サーバーエラー | 500 | Internal Server Error |
処理フロー
- リクエストを受信する
- カテゴリ一覧を取得する
- 一覧を返す
flowchart TD
Start([GET /v1/categories]) --> Fetch[DBからカテゴリ一覧取得]
Fetch --> Success[200 OK]
GET /v1/categories/{category_id}
概要
指定したカテゴリを取得します。
リクエストとレスポンス
URI
| パスパラメータ | データ型 | 備考 |
|---|---|---|
| category_id | string | _id |
リクエストボディ
なし
レスポンス
200 OK
例外処理
| 説明 | ステータスコード | ステータス名 |
|---|---|---|
| カテゴリが存在しない | 404 | Not Found |
| 内部サーバーエラー | 500 | Internal Server Error |
処理フロー
- リクエストを受信する
category_idでカテゴリを検索する- カテゴリを返す
flowchart TD
Start([GET /v1/categories/category_id]) --> Fetch[DBから検索]
Fetch -->|存在しない| E404[404 Not Found]
Fetch -->|存在する| Success[200 OK]
PUT /v1/categories/{category_id}
概要
指定したカテゴリを更新します。
リクエストとレスポンス
ヘッダー
リクエストヘッダー
Content-Type: application/json
レスポンスヘッダー
Content-Type: application/json
URI
| パスパラメータ | データ型 | 備考 |
|---|---|---|
| category_id | string | _id |
リクエストボディ
| フィールド | データ型 | 必須 | 備考 |
|---|---|---|---|
| name | string | ◯ |
レスポンス
200 OK
例外処理
| 説明 | ステータスコード | ステータス名 |
|---|---|---|
| リクエストボディが不正 | 422 | Unprocessable Entity |
| カテゴリが存在しない | 404 | Not Found |
| 内部サーバーエラー | 500 | Internal Server Error |
処理フロー
- リクエストを受信する
- リクエストボディをバリデーションする
- カテゴリの存在確認をする
- カテゴリを更新して保存する
- 更新したカテゴリを返す
flowchart TD
Start([PUT /v1/categories/category_id]) --> Validate[リクエストバリデーション]
Validate -->|invalid| E422[422 Unprocessable Entity]
Validate -->|valid| Fetch[DBから検索]
Fetch -->|存在しない| E404[404 Not Found]
Fetch -->|存在する| Save[DBに保存]
Save --> Success[200 OK]
DELETE /v1/categories/{category_id}
概要
指定したカテゴリを論理削除します。
リクエストとレスポンス
URI
| パスパラメータ | データ型 | 備考 |
|---|---|---|
| category_id | string | _id |
リクエストボディ
なし
レスポンス
204 No Content
例外処理
| 説明 | ステータスコード | ステータス名 |
|---|---|---|
| カテゴリが存在しない | 404 | Not Found |
| 内部サーバーエラー | 500 | Internal Server Error |
処理フロー
- リクエストを受信する
- カテゴリの存在確認をする
deleted_atに現在時刻を設定して保存する(論理削除)- 204 を返す
flowchart TD
Start([DELETE /v1/categories/category_id]) --> Fetch[DBから検索]
Fetch -->|存在しない| E404[404 Not Found]
Fetch -->|存在する| Delete[deleted_at を設定]
Delete --> Success[204 No Content]