ASP.NET CoreでWeb APIを作ってみる -検索用Web APIの改良

はじめに

今回は、前回追加した検索用Web APIを少し改良していきます。

実装

Controller/Users/UsersController.csに以下のメソッドを追加してください。

// GET: api/Users
[HttpGet]
public async Task<ActionResult<IEnumerable<User>>> GetUser([FromQuery(Name = "name")] string[] names)
{
    if (names.Length == 0)
    {
        return await _context.User.ToListAsync();
    }

    var users = await _context.User.Where(u => names.Contains(u.name)).ToListAsync();

    if (users == null)
    {
        return NotFound();
    }
    return users;
}

以前、GetUser()メソッドをコメントアウトしていた場合は、それを再利用しても問題ありません。
このAPIは、URLクエリパラメーターでnameの条件を指定し、一致したデータのみを返すようになっています。

動作確認

ブラウザでhttps://localhost:5001/api/Users?name=usernameにアクセスすると、nameがusernameのデータのみが返されます。
ここまでは前回までと同じですが、https://localhost:5001/api/Users?name=username&name=username2にアクセスすると、nameがusernameまたはusername2のデータが返されます。
さらに、https://localhost:5001/api/Usersにアクセスすると、全てのデータが返されます。

おわりに

前回のAPIでは複数の条件は指定できませんでした。今回は、それを可能なように改良してみました。
次回は、Web APIの動作を簡単に確認できるツールを紹介します。