Dynamiquement Ignorer WebAPI méthode du contrôleur pour l'explorateur de l'api documentation
nous avons mis en place un webAPI et nous avons un certain nombre de contrôleurs d'API.
Nous fournissons une documentation de l'API pour notre API et ce que nous voulons faire est d'exclure certaines méthodes web à partir de la documentation, mais nous voulons que ce soit fait de façon dynamique en fonction de l'environnement, nous sommes en cours d'exécution.
juste pour vous donner une compréhension de ce que je veux dire, disons que j'ai la suite de la méthode web
[ApiExplorerSettings(IgnoreApi = true)]
public Product getProduct()
{
...
}
Par la définition de la IgnoreAPI bien sur la ApiExplorerSettingAttribute de vrai, à l'exclusion de la méthode web à partir de la documentation qui est ce que nous voulons, mais nous avons besoin d'un moyen de réglage de la valeur "true" dynamiquement.
Idéalement, nous aimerions avoir une table de base de données avec bool valeurs pour chaque webMethod et sur la base de ces définissez la valeur de IgnoreAPi de la propriété.
Est-il un moyen pour y parvenir? Votre aide sera très appréciée.
OriginalL'auteur CodeExplorer | 2015-01-14
Vous devez vous connecter pour publier un commentaire.
Vous pouvez mettre en œuvre une coutume
IApiExplorer
et de l'inscrire dans l'API Web services pour avoir le plein contrôle sur les Api sont répertoriés ou non.Voici un billet de blog de la dev qui a mis en œuvre la plupart de ceci: http://blogs.msdn.com/b/yaohuang1/archive/2012/05/13/asp-net-web-api-introducing-iapiexplorer-apiexplorer.aspx
Et voici le
IApiExplorer
définition de l'interface: http://msdn.microsoft.com/en-us/library/system.web.http.description.iapiexplorer(v=vs. 118).aspxUne chose que vous pourriez faire est de dériver à partir de (ou de ré-utiliser les ressources existantes) de la
ApiExplorer
mise en œuvre et l'appelbase
pour obtenir la liste par défaut, puis filtrer davantage quand vous le voulez.Et par s_hewitt du commentaire, la recommandation est:
Merci beaucoup Eilon et s_hewitt. Qui a résolu mon problème.
merci, j'ai mis à jour ma réponse à inclure votre texte pour une meilleure visibilité!
OriginalL'auteur Eilon
Je ne sais pas beaucoup sur la génération de documentation de WebAPI, mais je ne sais à propos des attributs. Les attributs sont compilées dans le code et le résultat codé en dur valeurs détenues directement les données dans le fichier EXE ou DLL. Ils ne peuvent pas être modifiés.
Après avoir dit que, vous pourriez être en mesure d'appliquer des attributs comme une deuxième série après la compilation. Peut-être PostSharp pourrait aider ici? Peut-être en modifiant la configuration de la solution pourrait être un moyen d'indiquer à l'environnement que vous souhaitez créer pour et ce quelles méthodes d'obtenir le IgnoreApi traitement. Vous pouvez créer votre propre attribut d'appliquer les méthodes qui décrit les environnements de la méthode doit être ignoré à l'intérieur. (Je pense qu'il est plus probable que vous serez en mesure de faire ce que vous voulez dans PostSharp si vous n'essayez pas de les appeler une base de données pour obtenir des données.)
OriginalL'auteur Josh Gallagher