2014-01-24 6 views
16

Я создал WebAPI с использованием .Net 4.5 и хочу документировать этот API с помощью Swagger. Я добавил swagger-ui в мой проект .Net. Теперь, когда я просматриваю ../swagger-ui/index.html, он успешно открывает pet store api-docs (json) в формате swagger UI.Создание документации WebAPI в формате swagger json

Мой вопрос в том, как я могу создать такой (swagger) json для своих контроллеров и моделей WebAPI? Поскольку я ввел необходимые резюме/комментарии XML к классам и атрибутам C#.

Я видел, что Swagger.Net и Swashbuckle делают подобные вещи, но я не мог понять, как создать файл swagger-json, используя любой из них. Могу быть очень маленькой ошибкой, которую я делаю, но не могу указать.

Пожалуйста, помогите.

+0

Я хочу сделать это напротив http://stackoverflow.com/questions/10560857/swagger-with-static-documentation – theGeekster

+1

Вы нашли решение на этот вопрос? Я также заинтересован в генерации json spec без запуска веб-сервера. – Shrike

+0

Нет, я пока не нашел решения, которое поддерживает атрибутивную маршрутизацию WebAPI. – theGeekster

ответ

4

Вам необходимо интегрировать Swagger.NET в свой проект, так что вы в конечном итоге с помощью следующего контроллера:

public class SwaggerController : ApiController { /* snip */ } 

и вы также должны иметь следующий маршрут: зарегистрированный

context.Routes.MapHttpRoute (
name : "Swagger", 
routeTemplate: "api/swagger" 
defaults: new 
{ 
    controller = "Swagger", 
    action = "Get", 
}); 

в предположении, что работает, вы должны иметь возможность позвонить/api/swagger и получить примерно следующее:

{ 
    apiVersion: "4.0.0.0", 
    swaggerVersion: "2.0", 
    basePath: "http://localhost:5555", 
    resourcePath: null, 
    apis: [ 
    { 
    path: "/api/docs/Values", 
    description: "No Documentation Found.", 
    operations: [ ] 
    }, 
    { 
    path: "/api/docs/Home", 
    description: "No Documentation Found.", 
    operations: [ ] 
    } 
] 

}

затем в SwaggerUI/index.html вы хотите обновить discoveryUrl:

<script type="text/javascript"> 
    $(function() { 
     window.swaggerUi = new SwaggerUi({ 
      discoveryUrl: "http://localhost:5555/api/swagger", 
      apiKey:"", 
      dom_id:"swagger-ui-container", 
      supportHeaderParams: false, 
      supportedSubmitMethods: ['get', 'post', 'put'] 
     }); 

     window.swaggerUi.load(); 
    }); 
</script> 
+1

Это еще раз версия doc. Мы должны запустить веб-сервер, чтобы получить/показать документ. Но вопрос был в том, как генерировать json spec. Мне также интересна эта тема - мне нужно создать специальный файл json Swagger для сборки. – Shrike

+0

Swagger.Net будет генерировать json spec для вас, используя ASP.NET ApiExplorer. Если вам по какой-то причине нужно сохранить json spec-файл, просто позвоните по URL-адресу и сохраните результаты в файл. –

+1

Некоторые данные всегда будут доступны только во время выполнения, поэтому вам необходимо запустить службу. Например, маршруты будут определяться кодом, поэтому статический анализ не сможет угадать фактические маршруты без запуска службы. –

19

Как уже говорилось,/чванство принимает вас к развязность UI.

Если вы используете Swashbuckle, то /swagger/docs/v1 должен отвезти вас в файл swagger.json - я нашел это с помощью инструментов Chrome Dev.

Edit: если вы используете Swashbuckle.AspNetCore, то URL немного отличается - /swagger/v1/swagger.json

+0

Thats, если вы используете Swashbuckle. –

+0

Спасибо, Питер, отредактировал –

+0

MAGIC !!! @mattFrear –

0

Вы можете использовать «NSwagStudio» настольное приложение для загрузки документа JSon без запуска проекта API. Предоставляя сборку api.

https://github.com/RSuter/NSwag/wiki/NSwagStudio

Скачать (NSwagStudio) окна настольного приложения.

Смежные вопросы