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