Web API 2 / MVC 5: Atrybut Routing Parametry przekazywania jako querystring do kierowania różnych akcji na tym samym kontrolerze

Grałem z nowym Web API 2 (który wygląda bardzo obiecująco, ale mam trochę bólu głowy, aby niektóre trasy działały). Wszystko działa dobrze, gdy mam GetAllUsers / GetUser (int id), ale kiedy dodam GetUserByName (nazwa ciągu) i / lub GetUserByUsername (nazwa użytkownika łańcucha) rzeczy zaczynają być przerażające. Wiem, że int będzie pierwszym i że mogę zmienić kolejność tras, ale wyobraźmy sobie następujący scenariusz:

Użytkownik może mieć ważnyusername=1234 lubname=1234 (Wiem, że jest mało prawdopodobne, ale musimy zapobiec wszelkiej możliwej sytuacji) i możemy mieć prawidłowy identyfikator 1234 w bazie danych i wszystkie trasy zostaną pomieszane.

Może jest to coś, z czym będziemy musieli pracować w nowym interfejsie WebAPI 2, więc pomyślałem, że mogę przyjść z „obejściem” przekazywania filtrów jako querystringów, aby kierować różne działania w tym samym kontrolerze, na przykładapi/users/?username=1234 (GetUserByUsername) lubapi/users/?name=1234 (GetUserByName)

Ale nie mogę sprawić, by querystringi przeszły ... właściwie każda opcja querystringu została złapana przez GetAllUsers.

Czy ktoś ma jakieś sugestie / poprawki do tego scenariusza?

Wielkie dzięki

questionAnswers(1)

yourAnswerToTheQuestion