Wie behandeln optionaler query-string-Parameter in die Web-API
Ich Schreibe eine Web-API, und ich bin der Hoffnung, zu erfahren, was der beste Weg zu handhaben optionale query-string-Parameter ist.
Habe ich eine Methode definiert unten:
[HttpPost]
public HttpResponseMessage ResetPassword(User user)
{
var queryVars = Request.RequestUri.ParseQueryString();
int createdBy = Convert.ToInt32(queryVars["createdby"]);
var appId = Convert.ToInt32(queryVars["appid"]);
var timeoutInMinutes = Convert.ToInt32(queryVars["timeout"]);
_userService.ResetPassword(user, createdBy, appId, timeoutInMinutes);
return new HttpResponseMessage(HttpStatusCode.OK);
}
Ich bin in der Lage, rufen Sie diese durch die Bereitstellung der Benutzer-Objekt in der post-Text und Optional die Bereitstellung der zusätzlichen query-string-Werte, aber ist das Parsen der beste Weg zu gehen, wenn ich ein Einzelfall, der eine zufällige Auswahl der Parameter?
Was ist, wenn ich hatte das gleiche Szenario, aber 15 optionale Parameter (Extremfall vielleicht)?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie einen view-Modell enthält alle möglichen Parameter. Und dann haben Sie Ihre API-Methode nehmen Sie das view-Modell als parameter. Und berühren Sie niemals die raw-query-string in Ihre Aktion:
und dann in Ihrer Aktion konnten Sie map view-Modell auf die Domäne Modell:
/ResetPassword?userModel.CreatedBy=somevalue&userModel.AppId=someValue&...etc?
userModel
. Folgendes sollte auch funktionieren:/ResetPassword?createdBy=somevalue&appId=someValue&...
.Würden Sie ein ViewModel, das ist im Grunde eine Sammlung aller von den übergebenen Parametern zwischen client und server gekapselt in einem einzigen Objekt. (Dies ist die VM in MVVM)