Articles API
記事管理に関するAPIエンドポイントです。
GET /articles
記事一覧を取得します。
概要
項目 | 内容 |
---|---|
説明 | 公開記事の一覧をページネーション付きで取得 |
認証 | 不要 |
メソッド | GET |
パス | /v1/articles |
パラメータ
クエリパラメータ
パラメータ | 型 | 必須 | デフォルト | 説明 |
---|---|---|---|---|
page | integer | ✅ | - | ページ番号(1から開始) |
page_size | integer | - | 10 | 1ページあたりの件数(最小1、最大100) |
tag_id | string | - | - | 指定タグIDでフィルタリング |
category | tech | life | - | - | カテゴリでフィルタリング |
レスポンス
成功(200)
json
{
"apiVersion": "1.0.0",
"data": {
"articles": [
{
"id": "article_123",
"title": "Goでマイクロサービスを作る",
"content": "この記事では...",
"tagIds": ["tag_001", "tag_002"],
"category": "tech",
"created_at": "2024-01-01T10:00:00Z",
"updated_at": "2024-01-01T10:00:00Z"
}
]
}
}
エラー一覧
ステータス | エラーコード | 説明 |
---|---|---|
400 | VALIDATION_ERROR | クエリパラメータの値が不正 |
500 | INTERNAL_ERROR | サーバー内部エラー |
実装参照
internal/usecase/article/list.go
internal/infrastructure/http/echo/handler/article/list.go
POST /articles
新規記事を作成します。
概要
項目 | 内容 |
---|---|
説明 | 新規記事を作成します |
認証 | 必要 |
メソッド | POST |
パス | /v1/articles |
リクエスト
ヘッダー
http
Authorization: Bearer <JWT_TOKEN>
Content-Type: application/json
リクエストボディ
json
{
"title": "記事タイトル",
"content": "記事本文",
"tagIds": ["tag_001", "tag_002"],
"category": "tech"
}
フィールド詳細
フィールド | 型 | 必須 | 説明 |
---|---|---|---|
title | string | ✅ | 記事タイトル |
content | string | ✅ | 記事本文 |
tagIds | string[] | ✅ | 関連タグのID配列 |
category | tech | life | ✅ | 記事カテゴリ |
レスポンス
成功(201)
json
{
"apiVersion": "1.0.0",
"data": {
"article": {
"id": "article_123",
"title": "記事タイトル",
"content": "記事本文",
"tagIds": ["tag_001", "tag_002"],
"category": "tech",
"created_at": "2024-01-01T10:00:00Z",
"updated_at": "2024-01-01T10:00:00Z"
}
}
}
エラー一覧
ステータス | エラーコード | 説明 |
---|---|---|
400 | VALIDATION_ERROR | リクエストボディの値が不正 |
401 | UNAUTHORIZED | 認証トークンが無効 |
409 | CONFLICT | 同じタイトルの記事が既に存在 |
500 | INTERNAL_ERROR | サーバー内部エラー |
実装参照
internal/usecase/article/create.go
internal/infrastructure/http/echo/handler/article/create.go
GET /articles/
指定IDの記事詳細を取得します。
概要
項目 | 内容 |
---|---|
説明 | 指定IDの記事詳細を取得します |
認証 | 不要 |
メソッド | GET |
パス | /v1/articles/{article_id} |
パラメータ
パスパラメータ
パラメータ | 型 | 必須 | 説明 |
---|---|---|---|
article_id | string | ✅ | 記事ID |
レスポンス
成功(200)
json
{
"apiVersion": "1.0.0",
"data": {
"article": {
"id": "article_123",
"title": "Goでマイクロサービスを作る",
"content": "この記事では...",
"tagIds": ["tag_001", "tag_002"],
"category": "tech",
"created_at": "2024-01-01T10:00:00Z",
"updated_at": "2024-01-01T10:00:00Z"
}
}
}
エラー一覧
ステータス | エラーコード | 説明 |
---|---|---|
400 | VALIDATION_ERROR | article_idの形式が不正 |
404 | NOT_FOUND | 指定された記事が見つからない |
500 | INTERNAL_ERROR | サーバー内部エラー |
実装参照
internal/usecase/article/get.go
internal/infrastructure/http/echo/handler/article/get.go
PUT /articles/
指定IDの記事を更新します。
概要
項目 | 内容 |
---|---|
説明 | 指定IDの記事を更新します |
認証 | 必要 |
メソッド | PUT |
パス | /v1/articles/{article_id} |
パラメータ
パスパラメータ
パラメータ | 型 | 必須 | 説明 |
---|---|---|---|
article_id | string | ✅ | 記事ID |
リクエスト
ヘッダー
http
Authorization: Bearer <JWT_TOKEN>
Content-Type: application/json
リクエストボディ
json
{
"title": "更新されたタイトル",
"content": "更新された本文",
"tagIds": ["tag_001", "tag_003"],
"category": "life"
}
フィールド詳細
フィールド | 型 | 必須 | 説明 |
---|---|---|---|
title | string | ✅ | 記事タイトル |
content | string | ✅ | 記事本文 |
tagIds | string[] | ✅ | 関連タグのID配列 |
category | tech | life | ✅ | 記事カテゴリ |
レスポンス
成功(200)
json
{
"apiVersion": "1.0.0",
"data": {
"article": {
"id": "article_123",
"title": "更新されたタイトル",
"content": "更新された本文",
"tagIds": ["tag_001", "tag_003"],
"category": "life",
"created_at": "2024-01-01T10:00:00Z",
"updated_at": "2024-01-01T11:00:00Z"
}
}
}
エラー一覧
ステータス | エラーコード | 説明 |
---|---|---|
400 | VALIDATION_ERROR | リクエストボディまたはパスパラメータが不正 |
401 | UNAUTHORIZED | 認証トークンが無効 |
404 | NOT_FOUND | 指定された記事が見つからない |
500 | INTERNAL_ERROR | サーバー内部エラー |
実装参照
internal/usecase/article/update.go
internal/infrastructure/http/echo/handler/article/update.go
DELETE /articles/
指定IDの記事を削除します。
概要
項目 | 内容 |
---|---|
説明 | 指定IDの記事を削除します |
認証 | 必要 |
メソッド | DELETE |
パス | /v1/articles/{article_id} |
パラメータ
パスパラメータ
パラメータ | 型 | 必須 | 説明 |
---|---|---|---|
article_id | string | ✅ | 記事ID |
リクエスト
ヘッダー
http
Authorization: Bearer <JWT_TOKEN>
レスポンス
成功(204)
レスポンスボディなし
エラー一覧
ステータス | エラーコード | 説明 |
---|---|---|
400 | VALIDATION_ERROR | article_idの形式が不正 |
401 | UNAUTHORIZED | 認証トークンが無効 |
404 | NOT_FOUND | 指定された記事が見つからない |
500 | INTERNAL_ERROR | サーバー内部エラー |
実装参照
internal/usecase/article/delete.go
internal/infrastructure/http/echo/handler/article/delete.go
データモデル
Article
go
type Article struct {
ID string `json:"id"`
Title string `json:"title"`
Content string `json:"content"`
TagIDs []string `json:"tagIds"`
Category string `json:"category"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
Category
値 | 説明 |
---|---|
tech | 技術関連記事 |
life | ライフスタイル記事 |