Help Api i komentarze

Imagem de capa

Jak dodać do aplikacji asp.net api HELP PAGES, można znaleźć np. na stronie asp.net.

Co więcej bym chciał do tego dodać?

Tylko… co jeśli macie oddzielny projekt na modele do Web API?

Ano nic.

W naszej automatycznie wygenerowanej dokumentacji nie będzie żadnych komentarzy z tegoż właśnie projektu. Nie dziwota, przecież ładujemy tylko jeden plik xml:

config
  .SetDocumentationProvider(
      new XmlDocumentationProvider(
            HttpContext.Current.Server.MapPath("~/App_Data/XmlDocument.xml")));

Fajnie by było móc ustawić provider z kilkoma plikami XML. Np. tak:

config.SetDocumentationProvider(
  new XmlDocumentationProvider(
    new[] 
    { 
        HttpContext.Current.Server.MapPath("~/TestHelpApi.XML"), 
        HttpContext.Current.Server.MapPath("~/TestHelpApi2.XML")
    }));

Wystarczy tylko dodać nowy konstruktor do klasy XmlDocumentationProvider:

public XmlDocumentationProvider(IEnumerable documentPaths) 
{ 
  if (documentPaths == null || !documentPaths.Any()) 
  { 
    throw new ArgumentNullException(nameof(documentPaths)); 
  } 
  
  XDocument fullDocument = null; 
  
  foreach (var documentPath in documentPaths)   
  { 
    if (documentPath == null) 
    { 
      throw new ArgumentNullException(nameof(documentPath)); 
    } 

    if (fullDocument == null) 
    { 
      using (var stream = File.OpenRead(documentPath)) 
      { 
        fullDocument = XDocument.Load(stream); 
        }        
    }
    else 
    { 
      using (var stream = File.OpenRead(documentPath)) 
      { 
        var additionalDocument = XDocument.Load(stream); 

        fullDocument.Root?.XPathSelectElement("/doc/members")
                          .Add(additionalDocument.Root?
                                    .XPathSelectElement("/doc/members").Elements()); 
        } 
    } 
    } 
    _documentNavigator = fullDocument?.CreateNavigator(); 
}

Powyższy kawałek kodu znalazłem na stacku. Po zastosowaniu możesz cieszyć się REST API z komentarzami z osobnej assembly.