1

Ich arbeite an einer ASP.Net Core-Web-API mit REST-Verben mit optionalen Abfrage-String-Parameter.Wie kann ich überprüfen, ob eine http-Anfrage keine Abfrage Zeichenfolgen in ASP.NET Core Web-API

Zum Beispiel sieht der API-Aufruf so aus;

http://localhost:5010/servicetypecode?stc=123 

oder http://localhost:5010/servicetypecode?mailclasscode=fc

Ich verwende Code wie folgt die Abfrage-Strings einzurichten

public IActionResult Get([FromQuery] string mailclasscode, [FromQuery] string stc) { ... } 

in meiner Methode Körper Also, ich bin jede Saite einzeln wie diese Auswertung .. .

if (!string.IsNullOrEmpty(mailclasscode)) { ... } 


    if (!string.IsNullOrEmpty(stc)) { ... } 

Allerdings würde ich gerne meine erlauben Benutzer, die einfach eine direkte GET-Anweisung an die API senden, ohne dass Parameter für die Abfragezeichenfolge angegeben sind, und eine Liste aller Datensätze ungefiltert zurückgeben.

Also ein Anruf wie folgt;

http://localhost:5010/servicetypecode 

Aber ich würde es vorziehen, nicht in meinem Verfahren Körper zu tun zu haben, vor allem, wenn ich eine Menge von Query-String-Parametern haben war;

Gibt es eine Möglichkeit, einfach festzustellen, ob keine Abfragezeichenfolgenparameter bereitgestellt wurden, ohne jeden möglichen Abfragezeichenfolgenparameter zu bewerten?

Gibt es auch eine bessere Möglichkeit, Abfrage-String-Parameter zu evaluieren, als jeden möglichen Parameter zu testen, falls ich viele verschiedene Abfrage-String-Parameter übergeben würde?

Vielen Dank im Voraus für jede Hilfe, die Sie zur Verfügung stellen können.

Antwort

2

Sie können die eingehende Anfrage prüfen.

if (this.HttpContext.Request.QueryString.HasValue) 

auch als Notiz, wenn Sie eine Menge von Query-String-Parameter haben, können Sie eine einzelne Klasse statt mehrerer Parameter in der Methodensignatur verwenden.

+0

ATerry, danke. Das hat perfekt funktioniert. Der andere Teil der Frage, die ich gestellt habe, war mehr über eine bessere Möglichkeit, mehrere Abfrage-String-Parameter zu verarbeiten, als nur mehrere if-Anweisungen innerhalb des Hauptteils der Methode (ob ich mehrere Abfragezeichenfolgen oder eine Klasse in der Methodensignatur verwende). Ich versuche eine einzelne GET-Methode zu verwenden, stelle aber mehrere Filteroptionen zur Verfügung. Zur Zeit teste ich für jeden möglichen Abfragezeichenfolgenparameter mehrere if-Anweisungen. Das funktioniert, sieht aber etwas überladen aus. – EiEiGuy

+0

Wenn Sie eher eine abfragebasierte API verwenden möchten, fast wie eine Datenzugriffs-API, können Sie IQueryable mit einer eingeschränkten oder vollständigen Implementierung von OData verwenden. Außerdem können Sie sich GraphQL ansehen. Dies sind beide Frameworks, die das zurückgegebene IQueryable übernehmen und die erforderlichen Filter anwenden. – ATerry

Verwandte Themen