アプリケーションが実行されたため、テストできます。任意の REST クライアントを使用できます。以下の例では、*nix ツール curl を使用しています。
まず、最上位レベルのサービスを確認します。次の例でその方法を示します。
$ curl http://localhost:8080
{
"_links" : {
"people" : {
"href" : "http://localhost:8080/people{?page,size,sort*}",
"templated" : true
},
"profile" : {
"href" : "http://localhost:8080/profile"
}
}
} | Spring Data REST は、JSON 出力に HAL フォーマット (英語) を使用します。これは柔軟性があり、提供されるデータに隣接するリンクを提供する便利な方法を提供します。 |
次の例は、人物レコードを表示する方法を示しています(現時点ではなし)。
$ curl http://localhost:8080/people
{
"_embedded" : {
"people" : [ ]
},
"_links" : {
"self" : {
"href" : "http://localhost:8080/people?page=0&size=20"
},
"profile" : {
"href" : "http://localhost:8080/profile/people"
},
"search" : {
"href" : "http://localhost:8080/people/search"
}
},
"page" : {
"number" : 0,
"size" : 20,
"totalElements" : 0,
"totalPages" : 0
}
} 現在、要素はないため、ページはありません。新しい Person を作成する時間です! 次のリストは、その方法を示しています。
$ curl -i -H "Content-Type:application/json" -d '{"firstName": "Frodo", "lastName": "Baggins"}' http://localhost:8080/people
HTTP/1.1 201
Location: http://localhost:8080/people/1
Content-Type: application/vnd.hal+json
Transfer-Encoding: chunked
Date: Wed, 14 Jan 2026 13:40:30 GMT
{
"_links" : {
"self" : {
"href" : "http://localhost:8080/people/1"
},
"person" : {
"href" : "http://localhost:8080/people/1"
}
},
"firstName" : "Frodo",
"lastName" : "Baggins"
}-i: ヘッダーを含むレスポンスメッセージを確認できるようにします。新しく作成された Person の URI が表示されます。
-H "Content-Type:application/json": コンテンツ型を設定して、ペイロードが JSON オブジェクトを含むことをアプリケーションが認識できるようにします。
-d '{"firstName": "Frodo", "lastName": "Baggins"}': データが送信されています。
Windows を使用している場合、上記のコマンドは WSL (英語) で機能します。WSL をインストールできない場合は、一重引用符を二重引用符に置き換え、既存の二重引用符をエスケープする必要がある場合があります(例: -d "{\"firstName\": \"Frodo\", \"lastName\": \"Baggins\"}")。
| POST 操作へのレスポンスに Location ヘッダーが含まれていることに注意してください。これには、新しく作成されたリソースの URI が含まれます。Spring Data REST には、作成されたばかりのリソースの表現をすぐに返すようにフレームワークを構成するために使用できる 2 つのメソッド (RepositoryRestConfiguration.setReturnBodyOnCreate(…) および setReturnBodyOnUpdate(…)) もあります。RepositoryRestConfiguration.setReturnBodyForPutAndPost(…) は、作成および更新操作の表現レスポンスを有効にするショートカットメソッドです。 |
$ curl http://localhost:8080/people
{
"_embedded" : {
"people" : [ {
"_links" : {
"self" : {
"href" : "http://localhost:8080/people/1"
},
"person" : {
"href" : "http://localhost:8080/people/1"
}
},
"firstName" : "Frodo",
"lastName" : "Baggins"
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:8080/people?page=0&size=20"
},
"profile" : {
"href" : "http://localhost:8080/profile/people"
},
"search" : {
"href" : "http://localhost:8080/people/search"
}
},
"page" : {
"number" : 0,
"size" : 20,
"totalElements" : 1,
"totalPages" : 1
}
}people オブジェクトには、Frodo を含むリストが含まれています。self リンクがどのように含まれているかに注目してください。Spring Data REST は、グループ化のためにエンティティの名前を複数形にするために Evo Inflector (英語) も使用します。
$ curl http://localhost:8080/people/1
{
"_links" : {
"self" : {
"href" : "http://localhost:8080/people/1"
},
"person" : {
"href" : "http://localhost:8080/people/1"
}
},
"firstName" : "Frodo",
"lastName" : "Baggins"
} | これは、純粋に Web ベースのように見える場合があります。ただし、バックグラウンドでは、H2 リレーショナルデータベースがあります。本番環境では、おそらく PostgreSQL などの実際のものを使用します。 |
| このガイドでは、ドメインオブジェクトは 1 つだけです。ドメインオブジェクトが互いに関連しているより複雑なシステムでは、Spring Data REST は接続されたレコードに移動するのに役立つ追加のリンクを表示します。 |
次の例に示すように、すべてのカスタムクエリを見つけることができます。
$ curl http://localhost:8080/people/search
{
"_links" : {
"findByLastName" : {
"href" : "http://localhost:8080/people/search/findByLastName{?name}",
"templated" : true
},
"self" : {
"href" : "http://localhost:8080/people/search"
}
}
}HTTP クエリパラメーター name を含む、クエリの URL を確認できます。これは、インターフェースに埋め込まれた @Param("name") アノテーションと一致することに注意してください。
次の例は、findByLastName クエリの使用方法を示しています。
$ curl http://localhost:8080/people/search/findByLastName?name=Baggins
{
"_embedded" : {
"people" : [ {
"_links" : {
"self" : {
"href" : "http://localhost:8080/people/1"
},
"person" : {
"href" : "http://localhost:8080/people/1"
}
},
"firstName" : "Frodo",
"lastName" : "Baggins"
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:8080/people/search/findByLastName?name=Baggins"
}
}
} コード内で List<Person> を返すように定義したため、すべての結果が返されます。Person のみを返すように定義していた場合は、Person オブジェクトのいずれかが返されます。これは予測不可能なため、複数のエントリを返す可能性があるクエリでは、この方法は避けた方が良いでしょう。
PUT、PATCH、DELETE REST 呼び出しを発行して、既存のレコードを(それぞれ)置換、更新、削除することもできます。次の例では、PUT 呼び出しを使用しています。
$ curl -X PUT -H "Content-Type:application/json" -d '{"firstName": "Bilbo", "lastName": "Baggins"}' http://localhost:8080/people/1
{
"_links" : {
"self" : {
"href" : "http://localhost:8080/people/1"
},
"person" : {
"href" : "http://localhost:8080/people/1"
}
},
"firstName" : "Bilbo",
"lastName" : "Baggins"
} 次の例では、PATCH 呼び出しを使用しています。
$ curl -X PATCH -H "Content-Type:application/json" -d '{"firstName": "Bilbo Jr."}' http://localhost:8080/people/1
{
"_links" : {
"self" : {
"href" : "http://localhost:8080/people/1"
},
"person" : {
"href" : "http://localhost:8080/people/1"
}
},
"firstName" : "Bilbo Jr.",
"lastName" : "Baggins"
} | PUT はレコード全体を置き換えます。指定されていないフィールドは null に置き換えられます。PATCH を使用して、アイテムのサブセットを更新できます。 |
次の例に示すように、レコードを削除することもできます。
$ curl -X DELETE http://localhost:8080/people/1
$ curl http://localhost:8080/people
{
"_embedded" : {
"people" : [ ]
},
"_links" : {
"self" : {
"href" : "http://localhost:8080/people?page=0&size=20"
},
"profile" : {
"href" : "http://localhost:8080/profile/people"
},
"search" : {
"href" : "http://localhost:8080/people/search"
}
},
"page" : {
"number" : 0,
"size" : 20,
"totalElements" : 0,
"totalPages" : 0
}
} このハイパーメディア駆動型インターフェースの便利な側面は、curl(または任意の REST クライアント)を使用して、すべての RESTful エンドポイントを検出できることです。正式な契約書やインターフェースドキュメントを顧客と交換する必要はありません。