タスク内容
- Task.7-3 の流れと同様に、記事詳細の API とテストの実装をしよう。(※ アプリの仕様として、記事の詳細に関しては誰でもみれるようにしてください)
詳細機能の仕様
- 記事の詳細に関しては誰でもみれるようにする
- 記事詳細の日付はフロントで表示する際に、更新日をもとに表示する
模範手順
※ 実際にプログラマーになったら模範手順はないのが普通なので、一通りできてから確認するようにしましょう!
1. このTaskでやろうとしていること
- 何をやる?
- 記事詳細のAPIを叩いた際、DBからとってきた情報を Serializerでjson形式に形を整えて、
レスポンスができるようにする。
- なぜやる?
- Serializerにまとめると、ControllerにJSON形式でレスポンスを返すという内容を書く量が減り、返し方のルールが1か所に集まる
- Serializerを使用しない場合に書くコード
- render json: { ... } の形
- 返すキー(id, title, updated_at など)
- Controllerがスッキリして見通しが良くなる
- 返すJSONの形を揃えやすくなり、変更も追いやすい
- 必要な項目だけをフロント側に返せる
- うっかりメールアドレスやトークンなど不要な情報まで返してしまう事故を減らせる
task7-3となぜやるかについては同じ
2. 処理の流れ
- フロントから記事詳細取得のリクエストが来る(GET /api/v1/articles/:id)
- ルーティングにより ArticlesController の show アクションが呼ばれる
- Model(Article)に問い合わせて対象記事を取得する(idで検索)
- 取得した記事オブジェクトを Serializer に渡し、レスポンス用のJSON形式に整形する(必要な項目のみ)
- Controller が render でJSONを返す
- (例外)記事が見つからない場合は規定の形式でエラーを返す