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.
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
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