2016-04-28 13 views
1

Ich verwende web api 1 MVC 4web api optionale Parameter vor Erweiterung

Ich habe folgenden Code

public void save(int id , string name, string code = "") 
{ 

} 

I habe folgende Zuordnung in webapi.config.

config.Routes.MapHttpRoute(
       name: "saveproduct", 
       routeTemplate: "api/product/save/{id}/{name}/{code}.{ext}", 
       defaults: new 
       { 
        controller = "product", 
        code = RouteParameter.Optional, 
        action = "save" 
       }); 

Jetzt Wenn ich

rufen localhost: //api/product/save/1/book/p23.json

Es funktioniert

Aber

localhost: //api/product/save/1/book/.json

Es funktioniert nicht

Der Grund, warum ich gefunden ist, weil optionale Parameter "Code" zwischen ist in.

Wie kann ich es machen .. Wie ich brauche Erweiterung muss am Ende mit optionalen Parameter wie "Code".

Ich fand url, konnte aber nichts bezogen werden.

Dank

Antwort

0

Short: kann man nicht.

Lange: Sie können nicht einen optionalen Parameter in der Mitte der Strecke, weil das System, wenn die „.json“ der Wert Ihres {code} zu verstehen, nicht in der Lage ist, oder der Wert Ihrer {ext} Parameter.

Wenn Sie diese Art von Ansatz verwenden möchten, müssen Sie den Code-Parameter immer erzwingen.

BTW, eine Route wie localhost: //api/product/save/1/book/.json hat keinen Sinn ... .json es ist wie eine „Datei“ -Erweiterung, aber es gibt keinen Dateinamen hier . Sie sollten diese Art von Anruf nicht zulassen.