WebApi Controller mit zwei GET-Aktionen

8

Ich möchte zwei verschiedene GET-Aktionen haben, um die Daten nach Name und ID abzufragen,

Ich habe diese Routen:

%Vor%

und diese Aktionen im Controller:

%Vor%

während ein Anruf wie folgt: http://localhost:51119/api/companies/CompanyId/3cd97fbc-524e-47cd-836c-d709e94c5e1e funktioniert und ruft die Methode 'CompanyId' auf,

ein ähnlicher Aufruf von http://localhost:51119/api/companies/CompanyName/something bringt mich zu 404 nicht gefunden

aber das: ' http://localhost:51119/api/companies/CompanyName/?name=something ' funktioniert gut

Kann jemand dieses Verhalten erklären und was mache ich falsch?

    
Doron Sinai 28.03.2013, 12:04
quelle

1 Antwort

10

Der Selektor der Web-API-Route kann nicht wissen, ob die Zeichenfolge am Ende Ihrer URL eine GUID ist oder nicht. Daher wird nicht die richtige Route für die entsprechende GET-Aktion ausgewählt.

Um die richtige Route auszuwählen, müssen Sie eine Routenbeschränkung für die GUID-uri-Vorlage hinzufügen.

%Vor%

Fügen Sie dann die Einschränkung der Route hinzu, die mit der GUID umgehen soll.

%Vor%

Da diese Route spezifischer ist als die allgemeine "string" Route, muss sie über der Route liegen, die den Namen auflöst.

Dies sollte entsprechend zu den Aktionen führen.

Hoffe, das hilft.

    
Davin Tryon 28.03.2013, 12:13
quelle