ASP.NET Core の CRUD アクション
このピザ サービスは、ピザのリストに対する CRUD 操作をサポートしています。 これらの操作は、ASP.NET Core 属性によってマップされる HTTP 動詞を通して実行されます。 前述のように、HTTP GET
動詞は、サービスから 1 つ以上の項目を取得するために使用されます。 このようなアクションは、[HttpGet]
属性で注釈付けされます。
次の表は、ピザ サービス用に実装している 4 つの操作のマッピングを示したものです。
HTTP のアクション動詞 | CRUD の操作 | ASP.NET Core の属性 |
---|---|---|
GET |
Read | [HttpGet] |
POST |
作成 | [HttpPost] |
PUT |
更新する | [HttpPut] |
DELETE |
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 オブジェクトが無効です。 |
DELETE
実装が簡単なアクションの 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 つの各アクションをサポートする方法を示します。