2017-07-19 1 views
2

Selon le documentation for Swashbuckle, seuls quelques commentaires XML sont pris en charge dans la dernière version. Il semble que les commentaires XML tels que <example> ou <see> ne sont actuellement pas pris en charge but will be implemented in Swashbuckle v6.Ajout de liens dans la description d'autres opérations dans Swagger (via Swashbuckle)

Jusque là, existe-t-il une solution de contournement pour imiter le comportement de <example> ou de <see>?

Je voudrais ajouter en quelque sorte un lien (en utilisant <see> avec CREF) dans le <summary> d'un ENUM, qui est répertorié sous le modèle d'un point final, pour pointer vers le point final correspondant de l'ENUM (un critère différent Swagger que obtient la liste des types de cette énumération).

Edit (pas sûr comment formater en commentaire):

Je voudrais Swagger pour détecter <see> et afficher un lien dans la description de ENUM à un point final différent

/// <summary> 
/// Generic description. 
/// Find enum types <see cref="ContactEntityType">here</see> 
/// </summary> 
[PropertyRequired, PropertyStringAsEnum(typeof(ContactEntityType))] 
[DataMember(Name = "entityType")] 
public NamedReference EntityType { get; set; } 
+0

Je travaille sur ma fourche Swashbuckle et nous avons ajouté le support d'exemples: https://github.com/heldersepu/Swagger-Net/blob/master/Tests/Swagger.Net.Dummy.Core/Controllers/AnnotatedTypesContro ller.cs # L28 – HelderSepu

+0

Pouvez-vous me donner un échantillon complet de la façon dont vous utiliserez le HelderSepu

+0

J'ai ajouté un échantillon complet sous un edit dans la question originale –

Répondre

0

Vous pouvez utiliser un ISchemaFilter ou un IDocumentFilter pour modifier le SwaggerDoc résultant.

Voici quelques exemples:

private class ApplySchemaVendorExtensions : ISchemaFilter 
    { 
     public void Apply(Schema schema, SchemaRegistry schemaRegistry, Type type) 
     { 
      // Modify the example values in the final SwaggerDocument 
      // 
      if (schema.properties != null) 
      { 
       foreach (var p in schema.properties) 
       { 
        switch (p.Value.format) 
        { 
         case "int32": 
          p.Value.example = 123; 
          break; 
         case "double": 
          p.Value.example = 9858.216; 
          break; 
        } 
       } 
      } 
     } 
    } 

_

private class ApplyDocumentVendorExtensions : IDocumentFilter 
    { 
     public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer) 
     { 
      schemaRegistry.GetOrRegister(typeof(ExtraType)); 
      //schemaRegistry.GetOrRegister(typeof(BigClass)); 

      var paths = new Dictionary<string, PathItem>(swaggerDoc.paths); 
      swaggerDoc.paths.Clear(); 
      foreach (var path in paths) 
      { 
       if (path.Key.Contains("foo")) 
        swaggerDoc.paths.Add(path); 
      } 
     } 
    } 

Et pour ajouter un lien il suffit d'utiliser la balise d'ancrage:

/// <summary>Details - testing anchor: <a href="?filter=TestPost">TestPost</a></summary> 
+0

J'ai encore quelques exemples ici: https://github.com/heldersepu/SwashbuckleTest/blob/master/Swagger_Test/App_Start/SwaggerConfig.cs – HelderSepu