Swagger с приложением Azure Api для ASP.NET v5

Я пытаюсь настроить приложение Api (Azure) с Swagger + Swashbuckle, как продемонстрировал Скотт Хансельман на конференции // Build здесь: http://channel9.msdn.com/Events/Build/2015/2-628.

Я установил (используя NuGet) пакеты Swagger.Api и Swashbuckle.Core. Он не добавил никаких контроллеров или настроек, которые я ожидал бы, чтобы иметь страницу чванства. Когда я перехожу к {baseUrl} \ swagger, я получаю ошибку 404.

Я бы подумал, что, поскольку у него есть пользовательский интерфейс, ему потребуется веб-приложение в дополнение к приложению Api, но я пересмотрел демонстрацию, и Скотт четко сказал, что вы можете добавить Swagger + Swashbuckle в любое приложение Api. Во втором приложении, хотя я думаю, могут быть проблемы с обнаружением Api. Кто-нибудь еще успешно это настраивал?

Проект с чванством


person Ryan Langton    schedule 05.05.2015    source источник


Ответы (3)


Этот ответ уже устарел. См. Другой ответ.

Есть хороший пост с описанием вашей проблемы: https://alexanderzeitler.com/articles/Deploying-a-ASP-NET-MVC-6-API-as-Azure-API-App-in-Azure-App-Services/

Здесь описано, как добавить Ahoy! пакет в проект веб-API ASP.NET v6 и добавление его в качестве приложения API в Azure.

Вот еще один источник: http://devmeetsbi.ghost.io/help-and-test-page-for-asp-net-web-api-asp-net-5-and-mvc-6/

person Wessel Kranenborg    schedule 19.06.2015

Время идет, и теперь Swashbuckle работает с vNext (для меня beta8, возможно, и другие версии) - спасибо команде и участникам!

В project.json добавьте пакет:

    "Swashbuckle": "6.0.0-*",

В startup.cs в ConfigureServices ():

        services.AddSwaggerGen();
        services.ConfigureSwaggerDocument(options =>
        {
            options.SingleApiVersion(new Info
            {
                Version = "v1",
                Title = "My Super API",
                Description = "A Super API using Swagger and Swashbuckle",
                TermsOfService = ""
            });

        });
        services.ConfigureSwaggerSchema(options =>{
            options.DescribeAllEnumsAsStrings = true;
        });

В startup.cs в Configure ():

        app.UseSwaggerGen();
        app.UseSwaggerUi();

Теперь у вас есть доступ к документации API - http://domain:port/swagger/ui/index.html

Получите доступ к вашему определению Swagger - http://domain:port/swagger/v1/swagger.json

Затем, предполагая, что у вас есть хотя бы одна интернет-среда dev / uat / staging / prod, возьмите URL-адрес определения, затем выполните File-> Import URI в http://editor.swagger.io/ - теперь у вас есть code-gen примерно для 20 клиентов :)

Вы также можете настроить свой собственный сервер генерации кода, если хотите (https://github.com/swagger-api/swagger-codegen), однако я использовал существующий онлайн-генератор. Онлайн-редактор также имеет полные определения модели и отношений, по крайней мере, в моем случае, когда я полностью определил свою модель с помощью EF7 (я знаю, ick ... но это намного лучше, чем ‹= EF6, а ServiceStack пока не поддерживает CoreCLR) . В зависимости от размера вашего проекта это может сэкономить вам от нескольких часов до нескольких недель рабочего документирования, плюс он динамически обновляется по мере того, как вы пишете больше. И вы также можете использовать его для тестирования своих конечных точек, но я по-прежнему предпочитаю PostMan.

Полный пример проекта на https://github.com/mrsheepuk/ASPNETSelfCreatedTokenAuthExample/tree/beta8

Большие успехи MrSheepUK

HTH

person Ben E G    schedule 22.11.2015

Вы сделали все правильно, но, к сожалению, для ASP.NET 5 Swashbuckle пока не работает.

Вы можете получить Ahoy! это следующая версия Swashbuckle, которая поддерживает ASP.NET v6, здесь. Это должно заставить все работать.

person Panos    schedule 05.05.2015
comment
Возникли проблемы с тем, чтобы это работало (или даже с запуском их исходных примеров). Пример BasicAPI просто переходит к index.html и показывает поле для ввода URL-адреса и apikey. - person Ryan Langton; 05.05.2015
comment
Сейчас это бета-версия 6.0 в основном проекте Swashbuckle. - person Warren P; 01.06.2016