ASP.NET Core の CRUD アクション
- 5 分
このピザ サービスは、ピザのリストに対する CRUD 操作をサポートしています。 これらの操作は、ASP.NET Core 属性によってマップされる HTTP 動詞を通して実行されます。 前述のように、HTTP GET 動詞は、サービスから 1 つ以上の項目を取得するために使用されます。 このようなアクションは、[HttpGet] 属性で注釈付けされます。
次の表は、ピザ サービス用に実装している 4 つの操作のマッピングを示したものです。
| HTTP のアクション動詞 | CRUD の操作 | ASP.NET Core の属性 |
|---|---|---|
GET |
お読みください | [HttpGet] |
POST |
作成 | [HttpPost] |
PUT |
更新 | [HttpPut] |
DELETE |
削除 | [HttpDelete] |
GET アクションのしくみは既に確認しました。 POST、PUT、DELETE アクションの詳細について学習しましょう。
POST
ユーザーがエンドポイントに新しい項目を追加できるようにするには、[HttpPost] 属性を使って POST アクションを実装する必要があります。 項目 (この例ではピザ) をパラメーターとしてメソッドに渡すと、ASP.NET Core によって、エンドポイントに送信されたすべての application/JSON が、設定された .NET Pizza オブジェクトに自動的に変換されます。
次のセクションで実装する Create メソッドのメソッド シグネチャを次に示します。
[HttpPost]
public IActionResult Create(Pizza pizza)
{
// This code will save the pizza and return a result
}
[HttpPost] 属性により、Create() メソッドを使用して http://localhost:5000/pizza に送信される HTTP POST 要求がマップされます。 Get() メソッドで見たようにピザのリストを返す代わりに、このメソッドからは IActionResult 応答が返されます。
IActionResult により、クライアントは要求が成功したかどうかがわかり、新しく作成されたピザの ID が提供されます。 IActionResult は標準の HTTP 状態コードを使うため、実行されている言語やプラットフォームに関係なく、クライアントと簡単に統合できます。
| ASP.NET Core アクションの結果 |
HTTP 状態コード | 説明 |
|---|---|---|
CreatedAtAction |
201 | ピザがメモリ内キャッシュに追加されました。 ピザは応答本文に含まれており、メディアの種類が accept HTTP 要求ヘッダーで定義されています (既定では JSON)。 |
BadRequest が暗示されます |
400 | 要求本文の pizza オブジェクトが無効です。 |
さいわい、ControllerBase には、適切な HTTP 応答コードとメッセージが作成されるユーティリティ メソッドが含まれます。 これらのメソッドがどのように動作するかについては、次の演習で確認します。
PUT
インベントリ内のピザの変更または更新は、実装した POST メソッドに似ていますが、[HttpPut] 属性を使用し、更新する必要がある Pizza オブジェクトに加えて、id パラメーターを受け取ります。
[HttpPut("{id}")]
public IActionResult Update(int id, Pizza pizza)
{
// This code will update the pizza and return a result
}
上記のアクションで使用されている ActionResult の各インスタンスは、次の表の対応する HTTP 状態コードにマップされます。
| ASP.NET Core アクションの結果 |
HTTP 状態コード | 説明 |
|---|---|---|
NoContent |
204 | ピザはメモリ内キャッシュで更新されました。 |
BadRequest |
400 | 要求本文の Id の値が、ルートの id の値と一致しません。 |
BadRequest が暗示されます |
400 | 要求本文の Pizza オブジェクトが無効です。 |
削除
実装が簡単なアクションの 1 つは DELETE アクションであり、メモリ内キャッシュから削除するピザの id パラメーターだけを受け取ります。
[HttpDelete("{id}")]
public IActionResult Delete(int id)
{
// This code will delete the pizza and return a result
}
上記のアクションで使用されている ActionResult の各インスタンスは、次の表の対応する HTTP 状態コードにマップされます。
| ASP.NET Core アクションの結果 |
HTTP 状態コード | 説明 |
|---|---|---|
NoContent |
204 | ピザはメモリ内キャッシュから削除されました。 |
NotFound |
404 | 指定された id パラメーターに一致するピザが、メモリ内キャッシュに存在しません。 |
次のユニットの演習では、Web API で 4 つの各アクションをサポートする方法を示します。