コンテンツにスキップ

カテゴリ API

ブログのカテゴリ(大分類)を管理するエンドポイントです。 blog.category_id から参照されるほか、blog_builder がカテゴリ名から記事テンプレートを 選択するため、カテゴリ名はブログの見た目にも影響します(詳細は category テーブル を参照)。

記事(article)はカテゴリを持ちません。


POST /v1/categories

概要

カテゴリを新規作成します。

リクエストとレスポンス

ヘッダー

リクエストヘッダー

  • Content-Type: application/json

レスポンスヘッダー

  • Content-Type: application/json

URI

POST /v1/categories

リクエストボディ

{
  "name": "string"
}
フィールド データ型 必須 備考
name string ◯

レスポンス

201 Created

{
  "id": "string",
  "name": "string",
  "created_at": 1234567890000,
  "updated_at": 1234567890000
}

例外処理

説明 ステータスコード ステータス名
リクエストボディが不正 422 Unprocessable Entity
内部サーバーエラー 500 Internal Server Error

処理フロー

  1. リクエストを受信する
  2. リクエストボディをバリデーションする
  3. カテゴリを作成して保存する
  4. 作成したカテゴリを返す
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

GET /v1/categories

クエリパラメータ

パラメータ データ型 必須 備考
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

処理フロー

  1. リクエストを受信する
  2. カテゴリ一覧を取得する
  3. 一覧を返す
flowchart TD
    Start([GET /v1/categories]) --> Fetch[DBからカテゴリ一覧取得]
    Fetch --> Success[200 OK]

GET /v1/categories/{category_id}

概要

指定したカテゴリを取得します。

リクエストとレスポンス

URI

GET /v1/categories/{category_id}
パスパラメータ データ型 備考
category_id string _id

リクエストボディ

なし

レスポンス

200 OK

{
  "id": "string",
  "name": "string",
  "created_at": 1234567890000,
  "updated_at": 1234567890000
}

例外処理

説明 ステータスコード ステータス名
カテゴリが存在しない 404 Not Found
内部サーバーエラー 500 Internal Server Error

処理フロー

  1. リクエストを受信する
  2. category_id でカテゴリを検索する
  3. カテゴリを返す
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

PUT /v1/categories/{category_id}
パスパラメータ データ型 備考
category_id string _id

リクエストボディ

{
  "name": "string"
}
フィールド データ型 必須 備考
name string ◯

レスポンス

200 OK

{
  "id": "string",
  "name": "string",
  "created_at": 1234567890000,
  "updated_at": 1234567890000
}

例外処理

説明 ステータスコード ステータス名
リクエストボディが不正 422 Unprocessable Entity
カテゴリが存在しない 404 Not Found
内部サーバーエラー 500 Internal Server Error

処理フロー

  1. リクエストを受信する
  2. リクエストボディをバリデーションする
  3. カテゴリの存在確認をする
  4. カテゴリを更新して保存する
  5. 更新したカテゴリを返す
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

DELETE /v1/categories/{category_id}
パスパラメータ データ型 備考
category_id string _id

リクエストボディ

なし

レスポンス

204 No Content

例外処理

説明 ステータスコード ステータス名
カテゴリが存在しない 404 Not Found
内部サーバーエラー 500 Internal Server Error

処理フロー

  1. リクエストを受信する
  2. カテゴリの存在確認をする
  3. deleted_at に現在時刻を設定して保存する(論理削除)
  4. 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]