投稿一覧を実装しよう - satococoa/api-tutorial GitHub Wiki

投稿一覧

サーバに登録されている投稿を全て json 形式で返します。

Api::V1::PostsController#index

generator を使ってもいいのですが、今回は不必要なファイルが多く生成されてしまうので手作業でファイルを作ります。

app/controllers/api/v1/posts_controller.rb を以下の内容で作ってください。 (api, v1 ディレクトリは作る)

class Api::V1::PostsController < ApplicationController
  def index
    @posts = Post.all
  end
end

引き続き、view を作ります。 app/views/api/v1/posts/index.json.jbuilder を以下の内容で作ってください。

json.array!(@posts) do |post|
  json.extract! post, :title, :name, :body
end

実際にアクセスしてみます。(事前に管理画面から2, 3個の Post を登録しておくといいでしょう)

http://localhost:3000/api/v1/posts.json

[
  {
    title: "foo",
    name: "bar",
    body: "あいうえおかきくけこ"
  },
  {
    title: "baz",
    name: "barbar",
    body: "テストテスト"
  }
]

chrome 拡張の JSONView をインストールしておくと便利です。

もうちょっと複雑なレスポンスを作るにはこんな感じ

json.current_time Time.now
json.set! :posts do
  json.array!(@posts) do |post|
    json.extract! post, :title, :name, :body
  end
end
{
  current_time: "2013-07-24T17:29:46+09:00",
  posts: [
    {
      title: "bar",
      name: "foo",
      body: "あいうえお かきくけこ"
    },
    {
      title: "barbar",
      name: "baz",
      body: "かきくけこ さしすせそ"
    }
  ]
}