はじめに
今回は、前回追加したWeb APIに検索の機能をつけてみます。
実装
Controller/Users/UsersController.csに以下のメソッドを追加してください。
[HttpGet] public async Task<ActionResult<User>> GetUserByName([FromQuery(Name = "name")] string name) { var user = await _context.User.SingleAsync(u => u.name == name); if (user == null) { return NotFound(); } return user; }
クエリパラメータをFromQueryで指定しているのがポイントです。
そして、GetUser()メソッド(引数を取らない方)をコメントアウトするなり削除するなりしてください。
これを消しておかないと、条件にマッチするAPIのエンドポイントが複数できることになり、うまくルーティングが行われずに以下のエラーが返されます。
AmbiguousMatchException: The request matched multiple endpoints.
動作確認
ブラウザでhttps://localhost:5001/api/Users?name=usernameにアクセスすると、nameがusernameのデータのみが返されます。