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 アクションのしくみは既に確認しました。 POSTPUTDELETE アクションの詳細について学習しましょう。

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 つの各アクションをサポートする方法を示します。

知識を確認

1.

製品の名前を更新する必要があるものとします。 この要求に最も適しているのは、どの HTTP アクション動詞ですか?

2.

HTTP 404 状態コードを返すのが最も適切なのはどのシナリオで、ASP.NET Core ではどのようにしてそれを実現しますか?

回答を確認