1

Je travaille sur une API Web ASP.Net Core en utilisant des verbes REST avec des paramètres facultatifs de chaîne de requête.Comment vérifier si une requête http n'a pas de chaîne de requête dans l'API Web ASP.Net Core

Par exemple, l'appel API ressemble à ceci;

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

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

J'utilise le code comme ceci pour configurer les chaînes de requête

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

Ainsi, dans mon corps de la méthode, j'évalue chaque chaîne individuellement comme ça ..

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


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

Cependant, je voudrais autoriser mon les utilisateurs doivent simplement créer un GET direct à l'API sans fournir de paramètres de chaîne de requête et renvoyer une liste de tous les enregistrements, non filtrés.

Ainsi, un appel comme celui-ci;

http://localhost:5010/servicetypecode 

Mais je préférerais ne pas avoir à le faire dans mon corps de méthode, surtout si je devais avoir beaucoup de paramètres de chaîne de requête; Y at-il un moyen de déterminer simplement si aucun paramètre de chaîne de requête n'a été fourni sans évaluer chaque paramètre de chaîne de requête possible?

De même, existe-t-il un meilleur moyen d'évaluer les paramètres de chaîne de requête que de tester tous les paramètres possibles, dans le cas où je devrais passer beaucoup de paramètres de chaîne de requête différents?

Merci d'avance pour toute aide que vous pouvez fournir.

Répondre

2

Vous pouvez vérifier la demande entrante.

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

également comme une note, si vous avez beaucoup de paramètres de chaîne de requête, vous pouvez utiliser une seule classe au lieu de plusieurs paramètres dans la signature de la méthode.

+0

ATerry, merci. Cela a fonctionné parfaitement. L'autre partie de la question que je posais concernait une meilleure façon de traiter plusieurs paramètres de chaîne de requête plutôt que d'utiliser plusieurs instructions if dans le corps de la méthode (que j'utilise plusieurs chaînes de requête ou une classe dans la signature de méthode). J'essaie d'utiliser une seule méthode GET, mais je fournis plusieurs options de filtrage. Actuellement, je teste chaque paramètre de chaîne de requête possible en utilisant plusieurs instructions if. Cela fonctionne mais semble un peu encombré. – EiEiGuy

+0

Si vous cherchez à faire plus d'une API basée sur une requête, presque comme une API d'accès aux données, vous pouvez utiliser IQueryable avec une implémentation limitée ou complète d'OData. En outre, vous pouvez regarder GraphQL. Ce sont les deux frameworks qui prendront votre IQueryable retourné et appliqueront les filtres nécessaires. – ATerry