カテゴリ: Rails 更新日: 2025/12/03

RailsでAPIを作ろう!JSONレスポンスの正しい書き方とエラー対応の基本

JSON APIのベストプラクティス:ステータスコード・シリアライズ・エラー形式
JSON APIのベストプラクティス:ステータスコード・シリアライズ・エラー形式

先生と生徒の会話形式で理解しよう

生徒

「先生、Railsでスマホアプリとかと通信するにはどうすればいいんですか?」

先生

「その場合は、RailsのコントローラでJSONという形式のAPIを作るのが一般的です。」

生徒

「JSONってなんですか?難しそうです……」

先生

「大丈夫。JSONは人間にも読めるデータのかたまりで、Railsなら簡単に作れますよ。ポイントを順番に説明していきますね。」

1. JSONとは?APIとは?初心者にもわかりやすく解説

1. JSONとは?APIとは?初心者にもわかりやすく解説
1. JSONとは?APIとは?初心者にもわかりやすく解説

JSON(ジェイソン)とは、JavaScript Object Notationの略で、データを「名前」と「値」のペアで表すフォーマットのことです。例えば「名前がたろう、年齢が20歳」という情報は、次のように書きます。


{
  "name": "たろう",
  "age": 20
}

このJSONをインターネットで送受信する仕組みがAPI(エーピーアイ)です。アプリや他のサービスが、Railsのシステムにアクセスしてデータをもらったり、保存したりするための入口になります。

2. RailsのコントローラでJSONを返す方法

2. RailsのコントローラでJSONを返す方法
2. RailsのコントローラでJSONを返す方法

通常、RailsのコントローラはHTMLの画面を表示しますが、API用には画面ではなくJSONを直接返すように作ります。コントローラでJSONを返すには、render json:を使います。


class UsersController < ApplicationController
  def show
    user = User.find(params[:id])
    render json: user
  end
end

このコードは、指定されたユーザーの情報をJSON形式で返します。

3. ステータスコードとは?APIではとても大事!

3. ステータスコードとは?APIではとても大事!
3. ステータスコードとは?APIではとても大事!

ステータスコードは、APIの返事が成功だったか失敗だったかを相手に伝える3桁の番号です。以下が代表的なコードです:

  • 200 OK:成功しました
  • 201 Created:新しいデータを作成しました
  • 400 Bad Request:リクエストが正しくありません
  • 404 Not Found:データが見つかりません
  • 500 Internal Server Error:サーバー側のエラーです

Railsではstatus:オプションでこのコードを指定できます。


render json: { error: "見つかりませんでした" }, status: :not_found

4. JSONの形はどうあるべき?シリアライズとは?

4. JSONの形はどうあるべき?シリアライズとは?
4. JSONの形はどうあるべき?シリアライズとは?

シリアライズとは、データをJSONの形に整えることです。Railsでは、自動でモデルの内容をJSONに変換してくれますが、そのままだと必要ない情報も含まれることがあります。

そこで、onlyexceptを使って、必要な項目だけを指定できます。


render json: user.to_json(only: [:id, :name, :email])

このようにすることで、余計な情報を隠して、安全にデータをやりとりできます。

5. エラーを返すときのJSONの形式はどうする?

5. エラーを返すときのJSONの形式はどうする?
5. エラーを返すときのJSONの形式はどうする?

エラーが発生したときも、統一された形式でJSONを返すことが大切です。よく使われる形は以下のような構造です:


{
  "errors": [
    { "field": "email", "message": "メールアドレスは必須です" },
    { "field": "password", "message": "パスワードが短すぎます" }
  ]
}

このようにすれば、アプリ側でも表示しやすくなりますし、どこに何の問題があるかが一目でわかります。

6. バリデーションエラー時のレスポンス例

6. バリデーションエラー時のレスポンス例
6. バリデーションエラー時のレスポンス例

Railsでは、モデルにバリデーション(入力チェック)を設定できます。たとえば、ユーザー登録の際に必要な情報が足りないと、user.errorsにエラーが入ります。それをJSONで返すには次のようにします。


user = User.new(params.require(:user).permit(:name, :email))

if user.save
  render json: user, status: :created
else
  render json: {
    errors: user.errors.map { |field, msg| { field: field, message: msg } }
  }, status: :unprocessable_entity
end

7. JSON APIのベストプラクティスをふりかえり

7. JSON APIのベストプラクティスをふりかえり
7. JSON APIのベストプラクティスをふりかえり

RailsでJSON APIを作るときは、次のようなベストプラクティスを意識しましょう:

  • 明確なステータスコードを返す
  • JSONの形を統一する(特にエラー形式)
  • 必要な項目だけを選んでシリアライズする
  • バリデーションエラーをわかりやすく伝える
  • APIのレスポンスは、人間にもプログラムにも読みやすく

これらを意識することで、スマホアプリやJavaScriptとの連携がスムーズになります。RailsはJSON APIを作るのにとても向いているフレームワークです。

関連記事:
カテゴリの一覧へ
新着記事
New1
データベース
SQLの処理が遅くなる原因とは?初心者向けにデータベースパフォーマンス最適化を完全解説
New2
Ruby
RubyのネストHash操作を徹底解説!digとtransformメソッドで複雑なデータも楽々
New3
Rails
Railsインデックス設計の極意!爆速サイトを作るためのスキーマ設計ガイド
New4
データベース
SQLのCOMMITとROLLBACKとは?トランザクション操作を初心者向けに完全解説
人気記事
No.1
Java&Spring記事人気No1
Ruby
PATHと環境変数の正しい設定!Windows・Mac・Linux別チェックリスト付き
No.2
Java&Spring記事人気No2
Rails
Railsで日本語と時刻の設定をしよう!初心者でも安心のlocale/zone初期設定チートシート
No.3
Java&Spring記事人気No3
Ruby
Rubyのハッシュを徹底比較!シンボルキーと文字列キーの違いと使い分け
No.4
Java&Spring記事人気No4
Rails
Railsマイグレーションの型選びを完全ガイド!初心者が迷わないカラム設計
No.5
Java&Spring記事人気No5
Ruby
WindowsでRubyをインストールする方法!RubyInstallerとMSYS2を使った完全ガイド
No.6
Java&Spring記事人気No6
Rails
RailsモデルとActive Record基礎|ID戦略を完全理解!AUTO INCREMENT・UUID・ULIDの比較と導入手順
No.7
Java&Spring記事人気No7
データベース
ACID特性とは?データベーストランザクションの信頼性を初心者向けに徹底解説
No.8
Java&Spring記事人気No8
Rails
RailsモデルとActive Record基礎|クエリログの読み方を理解してEXPLAIN・joins・includesの違いを学ぼう