Вопросы с тегами [swagger-ui]

0

голосов
0

ответ
9

Просмотры

Swagger-UI emplyeed in nginx by bunled jar, it shows blank page

Форс-интерфейс можно посетить на окружающую среду «Dev», но он не в состоянии, когда я развернуть его в облаке. Я попытался AddResoucesHandler, но он не работает. Сообщение об ошибке: GET https://user.throw.atatakai.cn/webjars/springfox-swagger-ui/springfox.css?v=2.9.2 нетто :: ERR_ABORTED 404 (Not Found) развязность-ui.html: 8 GET https://user.throw.atatakai.cn/webjars/springfox-swagger-ui/swagger-ui.css?v=2.9.2 нетто :: ERR_ABORTED 404 (Not Found) развязность-ui.html: 70 GET по протоколу HTTPS: //user.throw.atatakai.cn/webjars/springfox-swagger-ui/swagger-ui-bundle.js?v=2.9.2 нетто :: ERR_ABORTED 404 (Not Found) развязность-ui.html: 71 GET по протоколу HTTPS: //user.throw.atatakai.cn/webjars/springfox-swagger-ui/swagger-ui-standalone-preset.js?v=2.9.2 нетто :: ERR_ABORTED 404 (Not Found) развязность-ui.html: 72 GET https://user.throw.atatakai.cn/webjars/springfox-swagger-ui/springfox.js?v=2.9.
Emwing
1

голосов
0

ответ
784

Просмотры

Генерация Swagger документации для существующего сервера NodeJS

Я пытаюсь документировать свой API с помощью Swagger, но если я документацию самостоятельно и вручную, я потратил много времени, а потом я увидел этот вопрос на SO, и последний ответ о экспресс-OAS -порожденная, что, кажется, чтобы быть хорошим инструментом. Сформирована своя документация с успехом, но POST не сделала мою Payload документации, и без этого, некоторый разработчик мог подумать, что мой посту не нужен полезный груз, чтобы отправить все, что я сделал, следуя документации, сделал некоторые испытания с помощью цифрового API и вызывать методы с помощью почтальона. Экспресс-OAS-генератор, генерирует документацию, но без полезной нагрузки в методе POST. Кто-то уже пройти через это?
Lucas_Santos
1

голосов
0

ответ
555

Просмотры

Как написать массив в Swagger?

Как преобразовать мой массив в моей JSON файл в соответствующий формат Swagger? Я только знаю, как преобразовать не-массив, но не фактический массив. Спасибо за помощь!
Handsome Programmer
1

голосов
0

ответ
893

Просмотры

swagger ui with spring security

I need specific role to access swagger ui snippet to access swagger-ui with role 2 ( tried following with no joy) http .csrf() .disable() .authorizeRequests() .antMatchers("/api/**").hasAuthority("ROLE_ROLE1") .antMatchers("/login/**").permitAll() .antMatchers("/info/**").permitAll() .antMatchers( "/configuration/ui", "/v2/api-docs", "/swagger-resources", "/configuration/security", "/swagger-ui.html", "/webjars/**").hasAuthority("ROLE_ROLE2") .and() .formLogin() .loginPage("/login.html") .loginProcessingUrl("/perform_login") .defaultSuccessUrl("/swagger-ui.html", true) .failureUrl("/login.html?error=true") .and().logout().logoutSuccessUrl("/login.html") Permit all works - this checks all the resources are granted access http .csrf() .disable() .authorizeRequests() .antMatchers("/api/**").hasAuthority("ROLE_ROLE1") .antMatchers("/login/**").permitAll() .antMatchers("/info/**").permitAll() .antMatchers( "/configuration/ui", "/v2/api-docs", "/swagger-resources", "/configuration/security", "/swagger-ui.html", "/webjars/**").permitAll() .and() .formLogin() .loginPage("/login.html") .loginProcessingUrl("/perform_login") .defaultSuccessUrl("/swagger-ui.html", true) .failureUrl("/login.html?error=true") .and().logout().logoutSuccessUrl("/login.html") there is in memory user for role2 auth .inMemoryAuthentication() .withUser("user1").password("userpassword").roles("ROLE2");; but when I login it doesnt bring up the swagger-ui , is there any thing missing ? permitAll does show the swagger-ui any help appreciated I tried http .csrf() .disable() .requestMatchers().antMatchers( "/swagger-ui.html", "/swagger-resources", "/configuration/ui", "/configuration/security", "/v2/api-docs", "/webjars/**", "/**") .and() .authorizeRequests() .antMatchers("/api/**").hasAuthority("ROLE_ROLE1") .antMatchers("/login/**").permitAll() .antMatchers("/info/**").permitAll() .antMatchers( "/swagger-ui.html", "/swagger-resources", "/configuration/ui", "/configuration/security", "/v2/api-docs", "/webjars/**").hasRole("ROLE2")
Jagruti Frank
1

голосов
0

ответ
152

Просмотры

Дубликат выполнения функции при создании успокоительной службы

Я пытаюсь создать свою службу как успокоительное, но когда я запускаю Refresh.bat файл и запустить запустить НПМ. Это дает ошибку. [HttpPost ( "апи / услуги / приложение / Test")] общественность асинхронной Task CreateTest (TestDetailsDto вход) [HttpDelete ( "апи / услуги / приложение / Test")] общественность асинхронной Task DeleteTest (EntityDto вход) [HttpGet ( "апи / услуги / приложение / Test ")] общественность асинхронной Task GetTest (EntityDto вход) [HttpPut (" апи / услуги / приложение / Test ")] общественность асинхронной Задача UpdateTest (вход TestDetailsDto) Ошибки: ERROR в C: / Users / MyName / источник /repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6197,5): Дублированный реализация функции. Ошибка в C: /Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6230,15): Дублирование выполнения функции. ОШИБКА в C: /Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6252,5): Дублированный реализация функции. Ошибка в C: /Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6267,16): Тип аргумент для параметра типа «R» не может быть выведена из использование. Рассмотрим указания аргументов типа в явном виде. Тип аргумента кандидат «недействительный» не является допустимым типом аргумента, потому что это не является родительским кандидатом "TestDetailsDto. Ошибка в C: /Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6281,15): Дублирование выполнения функции. Ошибка в C: /Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6300,5): Дублирование выполнения функции. ОШИБКА в C: /Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6315,16): Тип аргумент для параметра типа «R» не может быть выведен из эксплуатации. Рассмотрим указания аргументов типа в явном виде. Тип аргумента кандидат «номер» не является допустимым типом аргумента, потому что это не является родительским кандидатом "TestDetailsDto. Ошибка в C: /Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6329,15): Дублирование выполнения функции. Ошибка в C: /Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6351,5): Дублирование выполнения функции. Ошибка в C: /Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6370,16): Тип аргумента для параметра типа «R» не может быть выведено из эксплуатации. Рассмотрим указания аргументов типа в явном виде. Тип аргумента кандидат «недействительный» не является допустимым типом аргумента, потому что это не является родительским кандидатом "TestDetailsDto. Ошибка в C: /Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6384,15): Дублирование выполнения функции. ОШИБКА в C: /Users/MyName/source/repos/Stanchion/angular/src/app/merchandising/Tests/Test-list.component.ts (210,45): Свойство 'deleteTest' не существует на типа 'TestServiceProxy' , ОШИБКА в C: /Users/MyName/source/repos/Stanchion/angular/src/app/merchandising/Tests/Test-main.component.ts (102,41): Свойство 'getTestDetailsforEdit' не существует на типа 'TestServiceProxy' , ОШИБКА в C: /Users/MyName/source/repos/Stanchion/angular/src/app/merchandising/Tests/Test-main.component.ts (163,37): Свойство 'createTest' не существует на типе 'TestServiceProxy'. ОШИБКА в C: /Users/MyName/source/repos/Stanchion/angular/src/app/merchandising/Tests/Test-main.component.ts (206,37): Свойство 'createTest' не существует на типа 'TestServiceProxy' , ОШИБКА в C: /Users/MyName/source/repos/Stanchion/angular/src/app/merchandising/Tests/Test-main.component.ts (218,37): Свойство 'updateTest' не существует на типа 'TestServiceProxy' , Ошибка в C: /Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6197,5): Дублирование выполнения функции. ERROR в C: / Users / MyName / источник / хранилищу / подпорка / угловой / SRC / Shared / сервис-прокси / сервис-прокси. ц (6230,15): Дублирование выполнения функции. Ошибка в C: /Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6252,5): Дублирование выполнения функции. Ошибка в C: /Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6267,16): Тип аргумент для параметра типа «R» не может быть выведена из использование. Рассмотрим указания аргументов типа в явном виде. Тип аргумента кандидат «недействительный» не является допустимым типом аргумента, потому что это не является родительским кандидатом "TestDetailsDto. Ошибка в C: /Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6281,15): Дублирование выполнения функции. ERROR в C: / Users / MyName / источник / хранилищу / подпорка / угловой / SRC / Shared / сервис-прокси / сервис-прокси. ц (6300,5): Дублирование выполнения функции. Ошибка в C: /Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6315,16): Тип аргумент для параметра типа «R» не может быть выведена из использование. Рассмотрим указания аргументов типа в явном виде. Тип аргумента кандидат «номер» не является допустимым типом аргумента, потому что это не является родительским кандидатом "TestDetailsDto. Ошибка в C: /Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6329,15): Дублирование выполнения функции. Ошибка в C: /Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6351,5): Дублирование выполнения функции. ERROR в C: / Users / MyName / источник / хранилищу / подпорка / угловой / SRC / Shared / сервис-прокси / сервис-прокси. TS (6370,16): Тип аргумент «R» параметра типа не может быть выведен из эксплуатации. Рассмотрим указания аргументов типа в явном виде. Тип аргумента кандидат «недействительный» не является допустимым типом аргумента, потому что это не является родительским кандидатом "TestDetailsDto. Ошибка в C: /Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6384,15): Дублирование выполнения функции. ОШИБКА в C: /Users/MyName/source/repos/Stanchion/angular/src/app/merchandising/Tests/Test-list.component.ts (210,45): Свойство 'deleteTest' не существует на типа 'TestServiceProxy' , ОШИБКА в C: /Users/MyName/source/repos/Stanchion/angular/src/app/merchandising/Tests/Test-main.component.ts (102,41): Свойство «getTestDetailsforEdit» не существует на типе " TestServiceProxy. ОШИБКА в C: /Users/MyName/source/repos/Stanchion/angular/src/app/merchandising/Tests/Test-main.component.ts (163,37): Свойство 'createTest' не существует на типа 'TestServiceProxy' , ОШИБКА в C: /Users/MyName/source/repos/Stanchion/angular/src/app/merchandising/Tests/Test-main.component.ts (206,37): Свойство 'createTest' не существует на типа 'TestServiceProxy' , ОШИБКА в C: /Users/MyName/source/repos/Stanchion/angular/src/app/merchandising/Tests/Test-main.component.ts (218,37): Свойство 'updateTest' не существует на типа 'TestServiceProxy' , Service.Swag.Config файл: { "swaggerGenerator": { "fromSwagger": { "URL": "HTTP: // локальный: 22742 / чванство / v1 / swagger.json", "Выход": нулевая}}, экспорт класс AppServiceProxy {частное Http: Http; частная BaseUrl: строка; защищенный jsonParseReviver: (ключ: строка, значение: любое) => любая = не определено; Конструктор (@Inject (HTTP) HTTP: HTTP, @optional () @Inject (API_BASE_URL) BaseUrl ?: строка) {this.http = HTTP; this.baseUrl = BaseUrl? BaseUrl: ""; } / ** * @return Success * / Test (ID: номер): Наблюдаемое {пусть url_ = this.baseUrl + "? / API / услуги / приложение / Test"; если (идентификатор === неопределенными || Идентификатор === нуль) певд Error ( «Параметр„идентификатор“должен быть определен и не может быть пустым.»); остальное url_ + = "Id =" + encodeURIComponent ( "" + ID) + "&"; url_ = url_.replace (/ $ / "" [&?]); Const content_ = ""; пусть options_ = {тело: content_, метод: "получить", заголовки: новые заголовки ({ "Content-Type": "приложения / JSON; кодировка = UTF-8", "Accept": «приложения / JSON; кодировка = UTF -8" })}; вернуться this.http.request (url_, опции _) flatMap ((response_) => {вернуться this.processTest (response_);}) поймать ((response_:.. есть) => {если (response_ InstanceOf Response) {попробуйте { вернуть this.processTest (response_);} поймать (е) {вернуть Observable.throw (е);}} еще вернуть Observable.throw (response_);}); } Защищенный processTest (ответ: ответ): Наблюдаемое {состояние = Const response.status; если (статус === 200) {Const responseText = response.text (); пусть result200: TestDetailsDto = NULL; пусть resultData200 = responseText === ""? нуль: JSON.parse (responseText, this.jsonParseReviver); result200 = resultData200? TestDetailsDto.fromJS (resultData200): новый TestDetailsDto (); вернуть Observable.of (result200); } Иначе, если (статус === 401) {Const responseText = response.text (); вернуть throwException ( "Ошибка сервера.", состояние, responseText); (!! Статус == 200 == && статус 204)} иначе, если {Const responseText = response.text (); вернуть throwException ( "Произошла неожиданная ошибка сервера.", состояние, responseText); } Вернуть Observable.of (NULL); } / ** * @return Success * / Test (вход: TestDetailsDto): Наблюдаемое {пусть url_ = this.baseUrl + "/ API / услуги / приложение / Test"; url_ = url_.replace (/ $ / "" [&?]); Const content_ = JSON.stringify (вход input.toJSON (): нулевой?); пусть options_ = {тело: content_, метод: "положить", заголовки: новые заголовки ({ "Content-Type": "приложения / JSON; кодировка = UTF-8", "Accept": «приложения / JSON; кодировка = UTF -8" })}; .. Вернуться this.http.request (url_, опции _) flatMap ((response_) => {вернуться this.processTest (response_);}) поймать ((response_: любой) => {Если (response_ InstanceOf Response) {попробуйте {вернуть this.processTest (response_); } Поймать (е) {вернуть Observable.throw (е); }} Еще вернуть Observable.throw (response_); }); } Защищен processTest (ответ: Response): Observable {Const статус = response.status; если (статус === 200) {Const responseText = response.text (); вернуть Observable.of (NULL); } Иначе, если (статус === 401) {Const responseText = response.text (); вернуть throwException ( "Ошибка сервера.", состояние, responseText); (!! Статус == 200 == && статус 204)} иначе, если {Const responseText = response.text (); вернуть throwException ( "Произошла неожиданная ошибка сервера.", состояние, responseText); } Вернуть Observable.of (NULL); } / ** * @return Success * / Test (вход: TestDetailsDto): Наблюдаемое {пусть url_ = this.baseUrl + "/ API / услуги / приложение / Test"; url_ = url_.replace (/ $ / "" [&?]); Const content_ = JSON.stringify (вход input.toJSON (): нулевой?); пусть options_ = {тело: content_, метод: "пост", заголовки: новые заголовки ({ "Content-Type": "приложения / JSON; кодировка = UTF-8", "Accept": «приложения / JSON; кодировка = UTF -8" })}; вернуться this.http.request (url_, опции _). flatMap ((response_) => {Вернуть this.processTest (response_); .}) Поймать ((response_: любой) => {если (response_ InstanceOf Response) {попробуйте {вернуть this.processTest (response_);} поймать (е) {вернуться Observable.throw (е);}} еще вернуться Observable. бросить (response_);}); } Защищен processTest (ответ: Response): Observable {Const статус = response.status; если (статус === 200) {Const responseText = response.text (); пусть result200: число = NULL; пусть resultData200 = responseText === ""? нуль: JSON.parse (responseText, this.jsonParseReviver); result200 = resultData200! == неопределенной? resultData200: нуль; вернуться Observable. из (result200); } Иначе, если (статус === 401) {Const responseText = response.text (); вернуть throwException ( "Ошибка сервера.", состояние, responseText); (!! Статус == 200 == && статус 204)} иначе, если {Const responseText = response.text (); вернуть throwException ( "Произошла неожиданная ошибка сервера.", состояние, responseText); } Вернуть Observable.of (NULL); } / ** * @return Success * / Test (ID: номер): Наблюдаемое {пусть url_ = this.baseUrl + "? / API / услуги / приложение / Test"; если (идентификатор === неопределенными || Идентификатор === нуль) певд Error ( «Параметр„идентификатор“должен быть определен и не может быть пустым.»); еще url_ + = "Id =" + encodeURIComponent ( "" + ID) + "&"; url_ = url_.replace (/ $ / "" [&?]); Const content_ = ""; пусть options_ = {тело: content_, метод: "удалить", заголовки: новые заголовки ({ "Content-Type": "приложения / JSON; кодировка = UTF-8", "Accept": «приложения / JSON; кодировка = UTF -8" })}; вернуться this.http.request (url_, опции _) flatMap ((response_) => {вернуться this.processTest (response_);}) поймать ((response_:.. есть) => {если (response_ InstanceOf Response) {попробуйте { вернуть this.processTest (response_);} поймать (е) {вернуть Observable.throw (е); }} Еще вернуть Observable.throw (response_); }); } Защищен processTest (ответ: Response): Observable {Const статус = response.status; если (статус === 200) {Const responseText = response.text (); вернуть Observable.of (NULL); } Иначе, если (статус === 401) {Const responseText = response.text (); вернуть throwException ( "Ошибка сервера.", состояние, responseText); (!! Статус == 200 == && статус 204)} иначе, если {Const responseText = response.text (); вернуть throwException ( "Произошла неожиданная ошибка сервера.", состояние, responseText); } Вернуть Observable.of (NULL); }} } Защищен processTest (ответ: Response): Observable {Const статус = response.status; если (статус === 200) {Const responseText = response.text (); вернуть Observable.of (NULL); } Иначе, если (статус === 401) {Const responseText = response.text (); вернуть throwException ( "Ошибка сервера.", состояние, responseText); (!! Статус == 200 == && статус 204)} иначе, если {Const responseText = response.text (); вернуть throwException ( "Произошла неожиданная ошибка сервера.", состояние, responseText); } Вернуть Observable.of (NULL); }} } Защищен processTest (ответ: Response): Observable {Const статус = response.status; если (статус === 200) {Const responseText = response.text (); вернуть Observable.of (NULL); } Иначе, если (статус === 401) {Const responseText = response.text (); вернуть throwException ( "Ошибка сервера.", состояние, responseText); (!! Статус == 200 == && статус 204)} иначе, если {Const responseText = response.text (); вернуть throwException ( "Произошла неожиданная ошибка сервера.", состояние, responseText); } Вернуть Observable.of (NULL); }} текст(); вернуть Observable.of (NULL); } Иначе, если (статус === 401) {Const responseText = response.text (); вернуть throwException ( "Ошибка сервера.", состояние, responseText); (!! Статус == 200 == && статус 204)} иначе, если {Const responseText = response.text (); вернуть throwException ( "Произошла неожиданная ошибка сервера.", состояние, responseText); } Вернуть Observable.of (NULL); }} текст(); вернуть Observable.of (NULL); } Иначе, если (статус === 401) {Const responseText = response.text (); вернуть throwException ( "Ошибка сервера.", состояние, responseText); (!! Статус == 200 == && статус 204)} иначе, если {Const responseText = response.text (); вернуть throwException ( "Произошла неожиданная ошибка сервера.", состояние, responseText); } Вернуть Observable.of (NULL); }} вернуть throwException ( "Произошла неожиданная ошибка сервера.", состояние, responseText); } Вернуть Observable.of (NULL); }} вернуть throwException ( "Произошла неожиданная ошибка сервера.", состояние, responseText); } Вернуть Observable.of (NULL); }}
vivek nuna
1

голосов
0

ответ
114

Просмотры

Как показывают параметры Grape API, когда это хэш или массив и внутри значение не определено с чванством док

Я использую чванство документ для создания документа API в виноградном API. Параметры API определены как: убывание «Получить результаты по запросу» PARAMS сделать необходимо: тип, типа: String, DESC: «Типа поиском» требуется: тело, типа: Hash, DESC: «Тело запроса» по желанию: пользователь, типа: Hash , убывание: «поиск поддержки в качестве другого пользователя, в противном случае поиска текущего пользователя» сделать необходимо: идентификатор, типа: String, DESC: «идентификатор пользователя» требуется: имя, тип: String, убывание: «имя пользователя (дп)» требует: каталог, тип: String, убывание: «пользователь каталога принадлежит» конец конец пост: запрос сделать Сформированный JSON только показывает параметры, связанные с пользователем. Как я могу определить параметры хэша которых ключ не ограничена и может быть сгенерированы в API документе?
李梦驰
1

голосов
1

ответ
457

Просмотры

Кураж / Swashbuckle показывает «Неизвестный тип ответа»

Я создаю C # ASP.NET Core, 2,0 REST API, все идет хорошо, по большей части. Он использует маршрутизацию MVC, чтобы ген в REST API. Контроллеры довольно просты. // POST: апи / Volume / {ZoneId} / Set / {объем} [HttpPost ( "{ZoneId: INT} / [действие] / {объем: INT}", Name = "Установить")] общественный IActionResult Set (интермедиат ZoneId, объем INT) {вернуться CreateAndSend (strZonesLevel, ZoneId, $ "{объем: X2}"); } Использование последней из всех, установлен Swagger / Swashbuckle для AspNetCore 2.3.0 и интерфейс придумывает API, и все. SwashBuckle UI работает хорошо, я могу проверить API и т.д. Единственным исключением является то, что на пользовательском интерфейсе, тип ответа ВСЕГДА возвращается как «Неизвестный тип реагирования.» https://i.stack.imgur.com/6qqBh. JPG У меня есть следующие атрибуты перед моим классом (все методы возвращают один и тот же тип) [Производит ( "приложения / JSON")] [Маршрут ( "апи / Volume")] [ProducesResponseType (TypeOf (ControllerResponseModel), 200)] [ProducesResponseType (TypeOf (ControllerResponseModel), 400)] [ProducesResponseType (TypeOf (ControllerResponseModel), 500)] Сгенерированный JSON кажется Allright, то ControllerResponseModel в определении, и ссылки во всех нужных местах по объему API. Вот это подмножество. { "Чванство": "2,0", "информация": { "версия": "v1", "название": "AVController API"}, "пути": { «/ апи / Volume / {ZoneId} / Set / { объем} ": { "пост": { "метки": [" объем "], "OperationID": «URL»: { «типа»: «строка»}}}}} Любые идеи, почему интерфейс не будет показывающими тип возвращаемого значения и значения? Я попробовал многочисленные вещи, как с помощью получает вместо сообщений, а также с помощью [SwaggerResponse] атрибуты, но результат тот же. «URL»: { «типа»: «строка»}}}}} Любые идеи, почему интерфейс не будет показывающими тип возвращаемого значения и значения? Я попробовал многочисленные вещи, как с помощью получает вместо сообщений, а также с помощью [SwaggerResponse] атрибуты, но результат тот же.
Steven Goulet
1

голосов
0

ответ
102

Просмотры

Remove all of the commas in swagger model documentation

I want to get rid of the commas in swagger's model documentation. For example: Each property (other than the last one) is described with a comma at the end of the string. How can I get rid of that? I tried an OperationFilter but the commas seem to be added later than that (perhaps in the UI?) (Edit: confirmed, see below.) I am using swashbuckle with a C# project, if it matters. Edit: As requested, a sample of the code. public void ConfigureServices(IServiceCollection services) { services.AddMvc(); services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" }); // "HumanReadableTypeName" is irrelevant to the question but // selects the schema name as namespace + type name c.CustomSchemaIds(HumanReadableTypeName); c.DescribeAllEnumsAsStrings(); c.IncludeXmlComments(GetXmlComments); }); } public class ScopeResponseModel { /// /// Id of the administrative scope. /// public string Id { get; set; } /// /// Name of the administrative scope. /// public string Name { get; set; } /// /// Description of the administrative scope. /// public string Description { get; set; } /// /// Whether the administrative scope is built-in. /// public bool IsBuiltIn { get; set; } /// /// Indicates the built-in "All" scope. There will be /// exactly one scope with this property set to true. /// public bool IsAllScope { get; set; } } I checked the swagger.json file and it does not contain the commas that appear in the screenshot. So they must be coming from the UI code. How can I disable that? Thanks!
Tom Kludy
1

голосов
1

ответ
58

Просмотры

Owin несколько экземпляров и чванство

Я хотел бы запустить несколько экземпляров. Я использую следующий код Var опционных = новые StartOptions (); option.Urls.Add ( "HTTP: // локальный: 9000 / Foo"); вар приложение = WebApp.Start (опция, запуск) вар option2 = новые StartOptions (); option2.Urls.Add ( "HTTP: // локальный: 9000 / Bar"); вар app2 = WebApp.Start (опция, запуск); частная статическая сила при загрузке (IAppBuilder AppBuilder) {вар конфигурация = новый HttpConfiguration (); configuration.Routes.MapHttpRoute (название: "DefaultApi", routeTemplate: "API / {контроллер} / {ID}", по умолчанию: новый идентификатор {= RouteParameter.Optional}); configuration.Formatters.Clear (); configuration.Formatters.Add (новый JsonMediaTypeFormatter ()); appBuilder.UseWebApi (конфигурации); configuration.EnableSwagger (с => c.SingleApiVersion ( "v1", "
Marcus X
1

голосов
0

ответ
350

Просмотры

Кураж UI - Нет «Access-Control-Allow-Origin» заголовок присутствует на запрошенный ресурс

Я пишу API в Java, и используя Swagger документировать его. Однако, когда я пытаюсь «Try It Out» в Swagger, я получаю приглашение, которое гласит: Нет «Access-Control-Разрешить-Origin» заголовок присутствует на запрошенный ресурс. Я добавил заголовки моих конечных точек, и это работает для некоторых из них, но не все из них. Response.noContent () .header ( "Access-Control-Allow-Origin", "*") .header ( "Access-Control-Allow-методы", "GET, POST, DELETE, PUT OPTIONS, ГОЛОВУ"). построить (); ИЛИ Response.ok (результаты) .header ( "Access-Control-Allow-Origin", "*") .header ( "Access-Control-Allow-методы", "GET, POST, DELETE, PUT OPTIONS, HEAD" ) .build (); Кто-нибудь сталкивался с этим? Любые решения?
plusvictoria
1

голосов
0

ответ
70

Просмотры

В Swashbuckle как отфильтровать модель на основе кода состояния

У меня есть апи проект, где каждый метод возвращает свой ответ, завернутый в объекте ApiResponse. Класс выглядит следующим образом общественного класса ApiResponse {[JsonProperty (NullValueHandling = NullValueHandling.Ignore)] общественность T Data {получить; задавать; } [JsonProperty (NullValueHandling = NullValueHandling.Ignore)] Публичный список ошибок {получить; задавать; } [JsonProperty (NullValueHandling = NullValueHandling.Ignore)] общественное ResponseLinks ссылка {получить; задавать; } [JsonProperty (NullValueHandling = NullValueHandling.Ignore)] общественного ResponseMeta Мета {получить; задавать; }} В соответствии со спецификацией Json Api http://jsonapi.org/ данных и ошибки не должны появляться в ответ вместе. 1. Как получить чванства документ показывать только ошибки, когда код состояния не 200 и исключить ошибки, когда это 200? Я мог бы сделать 2 отдельных объектов, но я действительно предпочел бы, чтобы держать его в качестве одного класса, так что объект ApiResponse может решить, что является правильным способом построить себя. 2. Кроме того, чванство UI перечисляет все итерации дженериков в моделях Как очистить его так, это показывает только 1 ApiResponse модель? Пример вопроса 2
user3599659
1

голосов
0

ответ
104

Просмотры

Использование Swagger с несколькими контроллерами с таким же Url но разными типами реагирования

Я использую Swagger интерфейс для интерактивной документации API в моем проекте. У меня есть несколько контроллеров с тем же URL, логика для обоих различны и типы ответов различны - один производит JSON, еще один производит текст / CSV. Форс рассматривает только один из них. Каков путь для Кураж признать как?
Diparati
1

голосов
0

ответ
291

Просмотры

Кураж UI Базовая аутентификация не работает, но ротор делает

У меня есть REST API, реализованный в Java (MSF4J Codegen от чванства) и определение чванства 2, который описывает его. Чванством UI размещен на веб-сервере. API развернут на виртуальной машине где-то в Интернете. Моя проблема в том, что «попробовать его» функция развязность UI не работает. Я всегда получаю «401 Несанкционированное». Когда я беру завиток команду из пользовательского интерфейса и вставьте его в свой терминал работает. На прошлой неделе у меня не было HTTPS или обычную проверку подлинности - только HTTP - и он работал отлично. Теперь я не знаю, почему он не работает. Так как я изменил определение чванства к протоколу HTTPS интерфейс делает запрос OPTIONS. Я реализовал это, но я получаю 401 ответов. Сертификат поставляется Позволяет зашифровать и используется с помощью веб-сервера Apache. Апач является прокси-сервер для отдыха апи на той же машине. Вот мой аутентификации перехватчик: общественный класс BasicAuthSecurityInterceptor расширяет AbstractBasicAuthSecurityInterceptor {@Override защищен булева аутентификация (String имя пользователя, String пароль) {если (checkCredentials (имя пользователя, пароль)) возвращает истину; вернуться ложным; } частные булевы checkCredentials (String имя пользователя, String пароль) {если (username.equals ( "TestUser")) вернуть BCrypt.checkpw (пароль, "$ 2a $ 10 $ iXRsLgkJg3ZZGy4utrdNyunHcamiL2RmrKHKyJAoV4kHVGhFv.d6G"); вернуться ложным; }} Вот часть апи: общественный абстрактный класс DeviceApiService {частный статический окончательный Logger ЛЕСОЗАГОТОВИТЕЛИ = LogManager.getLogger (); общественный абстрактный ответ deviceGet () бросает NotFoundException; общественный абстрактный ответ deviceIdAvailableLoadGet (Integer идентификатор, Долго от, долго, разрешение String) бросает NotFoundException; общественный абстрактный ответ deviceIdGet (Integer идентификатор) бросает NotFoundException; защищенный ответ getOptionsResponse () {Строка allowedOrigin = ""; попробуйте {allowedOrigin = PropertyFileHandler.getInstance () getPropertyValueFromKey ( "api.cors.allowed"). } Задвижка (IllegalArgumentException | PropertyException | IOException е) {LOGGER.error ( "Не удалось получить разрешено происхождение.", Д); } Ответ Ответ = Response.ok (). Заголовок ( "Разрешить", "GET"). Заголовок ( "Access-Control-Allow-Origin", allowedOrigin) .header ( "Access-Control-Allow-Headers", «разрешение , тип содержимого ") построить (). вернуть ответ; }} Класс DeviceApi общественного {частный окончательный DeviceApiService делегат = DeviceApiServiceFactory.getDeviceApi (); // @formatter: от @GET @Produces ({ "приложения / JSON"}) @ io.swagger.annotations.ApiOperation (значение = "Получить устройства", отмечает "=", ответ = Device.class, responseContainer = «Список », СВИДЕТЕЛЬСТВО = {@ io.swagger.annotations.Authorization (значение = "BasicAuth")}, бирки = { "Device",}) @ io.swagger.annotations.ApiResponses (значение = {@ io.swagger.annotations. ApiResponse (код = 200, сообщение = "200 OK", ответ = Device.class, responseContainer = "Список" )}) Общественный deviceGet отклика () бросает NotFoundException {вернуть delegate.deviceGet (); } @OPTIONS @Consumes ({ "приложения / JSON"}) @Produces ({ "приложения / JSON"}) @ io.swagger.annotations.ApiOperation (значение = "поддержка CORS", отмечает = "", ответ = Пустота. класс, разрешение = {@ io.swagger.annotations.Authorization (значение = "BasicAuth")}, бирки = { "Device",}) @ io.swagger.annotations.ApiResponses (значение = {@ io.swagger.annotations. ApiResponse (код = 200, сообщение = "по умолчанию ответ для метода CORS", ответ = Void.class)}) deviceOptions общественный резонанс () бросает NotFoundException {вернуть delegate.getOptionsResponse (); }} EDIT: Это те заголовки запроса создает чванство УИ: Accept: текст / HTML, приложение / XHTML + хт ... складка / XML; д = 0,9, * / *; д = 0,8 Accept-Encoding: GZIP, выкачать, уш Accept-Language: де, EN-US; д = 0,7, ен; д = 0,3 Access-Control-Request-Headers: авторизация Access-Control-Request-метод: GET Connection: Keep-жив DNT: 1 Ведущий: api.myfancyurl.com Происхождение: http://apidoc.myfancyurl.com Пользователь -agent: Mozilla / 5.0 (Windows NT 10,0; ...) Gecko / 20100101 Firefox / 61.0 кажется, что заголовок авторизации отсутствует. Когда я отредактировать запрос и отправить его с заголовком авторизации и закодированными полномочиями он работает. Но я не знаю, почему развязность не добавляет этот заголовок. Если один принимает все варианты запросов без авторизации? авторизации Access-Control-Request-метод: GET Connection: Keep-Alive DNT: 1 Хост: api.myfancyurl.com Origin: http://apidoc.myfancyurl.com User-Agent: Mozilla / 5.0 (Windows NT 10,0; ...) Gecko / 20100101 Firefox / 61.0 кажется, что заголовок авторизации отсутствует. Когда я отредактировать запрос и отправить его с заголовком авторизации и закодированными полномочиями он работает. Но я не знаю, почему развязность не добавляет этот заголовок. Если один принимает все варианты запросов без авторизации? авторизации Access-Control-Request-метод: GET Connection: Keep-Alive DNT: 1 Хост: api.myfancyurl.com Origin: http://apidoc.myfancyurl.com User-Agent: Mozilla / 5.0 (Windows NT 10,0; ...) Gecko / 20100101 Firefox / 61.0 кажется, что заголовок авторизации отсутствует. Когда я отредактировать запрос и отправить его с заголовком авторизации и закодированными полномочиями он работает. Но я не знаю, почему развязность не добавляет этот заголовок. Если один принимает все варианты запросов без авторизации? знаю, почему развязность не добавляет этот заголовок. Если один принимает все варианты запросов без авторизации? знаю, почему развязность не добавляет этот заголовок. Если один принимает все варианты запросов без авторизации?
JWo
1

голосов
0

ответ
74

Просмотры

Как проверить все свойства объекта в ходу-чванства?

У меня есть swagger.json, который принимает тело POST в качестве объекта с некоторыми требуемыми свойствами с типами данных. Я могу видеть ServeError (), которые вызываются, когда одно из свойств отсутствует или если один неправильный тип данных. Он останавливается и дает первую проверку, которая терпит неудачу. Есть ли способ, чтобы проверить все свойства, поэтому, когда Подавать Error вызывается он содержит информацию о всех валидациях, которые не смогли? Я надеюсь, что есть флаг, я могу поставить в swagger.json, не смогли найти его в любом месте его. "PostResp": { "Тип": "объект", "требуется": [ "RecordId", "SomeString"], "Свойства": { "RecordID": { "типа": "целое число"}, "SomeString": { «типа»: «строка»
rbk
1

голосов
0

ответ
401

Просмотры

SwaggerUI: TypeError: Failed to fetch

Я использую экземпляр щ чванства на моем tomcat8. Он загружает файл .yaml, который описывает спецификацию чванства. Все загружается нормально, когда я пытаюсь использовать функцию «попробовать его», он посылает HTTP-запрос к серверу и дает TypeError: Не удалось получить обратно. На моем сервере я включен CORS через импорт java.io.IOException; импорт javax.ws.rs.container.ContainerRequestContext; импорт javax.ws.rs.container.ContainerResponseContext; импорт javax.ws.rs.container.ContainerResponseFilter; импорт javax.ws.rs.ext.Provider; @Provider класс CORSFilter общественность реализует ContainerResponseFilter {@Override общественный вакуум-фильтр (ContainerRequestContext RequestContext, ContainerResponseContext responseContext) бросает IOException {responseContext.getHeaders (). Добавить ( " Заголовок Access-Control-Allow-Origin' присутствует на запрошенный ресурс. Происхождение «HTTP: // локальный: 8080», следовательно, не имеет права доступа. Если непрозрачный ответ служит вашим потребностям, установить режим просьбы к «не-CORS» не для извлечения ресурса с CORS отключенным. Как я могу включить CORS в Swagger / UI? На сайте сервера он должен быть включен. Я что-то пропустил?
AdrianL
1

голосов
1

ответ
339

Просмотры

Springboot чванство с JsonView

Можно интегрировать чванство с @JsonView? У меня есть одна модель, которую я использую @JsonView возвращать только несколько полей, но чванство-щ показывает модель скважины. Это моя модель: общественный класс Intimacao расширяет EntityBase {@Embedded @JsonView ({}) View.Intimacao_Lista.class частный Devedor devedor; @Embedded личное Sacador sacador; @Embedded личное Apresentante apresentante; @Embedded личное título título; } Это мой контроллер: @GetMapping ( "/") @PreAuthorize ( "hasRole ( 'Administrador') или hasRole ( 'MOTOBOY')") @JsonView ({View.Intimacao_Lista.class}) Listar общественности Список (Principal принципала) {System.out.println (principal.getName ()); возвращать нуль; } Это результат в развязность-Ui [{ "apresentante": { "Documento": "
Fabio Ebner
1

голосов
1

ответ
154

Просмотры

How to define date example in MicroProfile OpenAPI

I tried to create minimal example of the problem. Let's say we have simple return object: public class Result { @Schema(example = "2012-01-01") private LocalDate sampleDate; // omitted getter and setter } returned by simple JAX-RS endpoint: @Path("/example") @Produces(MediaType.APPLICATION_JSON) public class Resource { public List example() { // omitted implementation } } MicroProfile OpenAPI in Open Liberty will automatically generate following OpenAPI (Swagger) file: openapi: 3.0.0 info: title: Deployed APIs version: 1.0.0 servers: - url: http://localhost:9080/api paths: /example: get: operationId: example responses: default: description: default response content: application/json: schema: type: array items: $ref: '#/components/schemas/Result' components: schemas: Result: type: object properties: sampleDate: type: string format: date example: 2012-01-01 The problem is that embedded Swagger UI is displaying the date example as empty JS object: I'm not sure if this is bug on Swagger UI side because if I don't provide any example in Java annotation = any example in OpenAPI file it will render the example as current day, e.g.: [ { "sampleDate": "2018-11-27" } ] Everything works correctly when I edit the OpenAPI output manually. Both single and double quotes fix the problem: ... sampleDate: type: string format: date example: '2012-01-01' or ... sampleDate: type: string format: date example: "2012-01-01" will produce expected output: [ { "sampleDate": "2012-01-01" } ] Question is how to change the annotations to get desired OpenAPI output. Single quotes are automatically escaped: @Schema(example = "'2012-01-01'") private LocalDate sampleDate; will produce: ... sampleDate: type: string format: date example: '''2012-01-01''' Additional double quotes in Java doesn't have any effect on ouput: @Schema(example = "\"2012-01-01\"") private LocalDate sampleDate; will produce same unquoted output: ... sampleDate: type: string format: date example: 2012-01-01 I know that I can write the OpenAPI yaml output manually but that is my last resort because I don't want to sacrifice automatic generation just because date examples are not behaving as I want. Maybe some OASFilter can be implemented to automatically wrap date's example values or I'm just missing something obvious here.
Róbert Komorovský
1

голосов
1

ответ
56

Просмотры

Построение ответа OpenAPI, в том числе oneOf, и, возможно, allOf

Я пытаюсь создать ответ от различных компонентов схемы с помощью OpenAPI 3. Есть в основном три части ответа: Общий компонент, другие конечные точки (т.е. использовать флаги успех / провал). - # / компоненты / схемы / core_response_schema внутри allOf. Свойства, что все ответы на этой конечной точке использования (то есть, user_id) - свойства компонента из ниже. Один из нескольких схем, которые будут варьироваться в зависимости от типа пользователя. - oneOf компонент. Я определил, что я должен использовать allOf, чтобы иметь возможность смешивать свойства (пункт 2) и ответ ядра (пункт 1), хотя это кажется неправильным, поскольку есть только один пункт. Я попытался $ реф, но это не сработало. Ниже успешно проходит три различных инструмента OpenAPI пылеобразования, но в этом примере он строит, Сваггер UI не показать пункт 2 вещи (свойства), и делает показать все пункт 3 вещи (должны быть oneOf). "ответы": { "200": { "Описание": "Операция выполнена успешно.", "содержание": { "приложение / JSON": { "схема": { "свойство": { "user_id": { «$ исх ": "# / компоненты / схемы / user_id"}, "результаты": { "типа": "массив", "элементы": { "$ исх": "# / компоненты / схемы / result_user_by_id"}}}, ]}]} Тип пользователь B: { "успех": правда, "num_results": 1, "user_id": "c1b00cb715", "Результаты": [{ "user_type": "В", "group_id": "e7a99e3769" , «имя»: нулевой, «название»: нулевой, ... (и так далее, пока мы не получим на материал, уникальный для этого типа пользователя) ... «supported_charities»: [ «Основы ООН»], «charity_urls «: [„http://www.un.int“]}]} Что такое правильный способ объединить вместе различные схемы и свойства в OpenAPI? Правильно ли это и Сваггер UI просто может» т справиться с этим? А как вы смешиваете схему со свойствами без использования allOf? Это говорит о том, что это возможно: Кураже схема: oneOf, anyOf, allOf действует в то же время?
GIS-Jonathan
1

голосов
0

ответ
90

Просмотры

ApiModelProperty Аннотация объектов не работает с чванством

чванство версия 1.5.20 общественного класса SomeDto расширяет TemporallyScopedEntityDto {@ApiModelProperty (значение = «Это не отображается в чванство Ui документы») личное ZonedDateTimeDto publishDate; @ApiModelProperty (значение = «Это отображение в развязности Ui документах») список частных территориях = новый ArrayList (); } Оба аннотации появляются в файл JSON API-DOCS Однако дата публикации не появляется в чванстве документы UI Территория появляется в интерфейсе чванства Документов есть причина, почему объект Java не может быть аннотированной как это
Dave Keane
1

голосов
1

ответ
135

Просмотры

Как отключить чванство-UI в производстве (Thorntail)?

У меня есть приложение, построенное с Wildfly Swarm (теперь Thorntail), и я интегрировал Swagger с моим REST API, для документации, а также использовать его для тестирования с Swagger-UI. Я хотел бы знать, если это возможно, чтобы отключить часть Форс-интерфейса, когда я раскрываю мое приложение в производственной среде. Я попытался посмотреть в документации чванства, чтобы увидеть, есть ли какие-либо свойства для этого, но не мог найти. То же самое по документации Thorntail. Одним из возможных решений было бы отключить Maven зависимость чванства-UI через профиль Maven, когда я построю банку. Я хотел бы избежать этого, потому что тогда я буду иметь одну баночку для производства и один для развития. Я видел много предложений, но они, кажется, специфичными для Spring ботинка, как эта Как вы выключите чванство-UI в производстве
Willyan
1

голосов
1

ответ
16

Просмотры

Как я могу заставить HTTPS для расхаживает запроса URL,?

Я первый побежал в этот вопрос, когда я пытался решить, как заставить чванство пользовательский интерфейс для поиска моей развязность / Docs / v1 с использованием протокола HTTPS. Мне удалось решить, что с помощью этой функции в SwaggerConfig.cs:.... GlobalConfiguration.Configuration .EnableSwagger (с => {c.RootUrl (ResolveBasePath) строка ResolveBasePath (HttpRequestMessage сообщение) {вар virtualPathRoot = message.GetRequestContext () VirtualPathRoot ; вар schemeAndHost = "https: //" + message.RequestUri.Host, вернуть новый Uri (новый Uri (schemeAndHost, UriKind.Absolute), virtualPathRoot) .AbsoluteUri;} Это успешно осуществляет поиск документов и отображает их на развязность UI . Когда я на самом деле пытаюсь проверить один из моих API вызовов, он использует HTTP и запрос не удается. Я ве уже использовали c.Schemes (новый [] { "HTTPS"}); в попытке сделать это, без успеха. Я был бы весьма признателен, если кто-то имеет некоторое представление о том, как я мог бы решить эту проблему.
gavsta707
1

голосов
0

ответ
32

Просмотры

Как передать массив объектов с помощью строки запроса в SwaggerUI

Как передать массив объектов с использованием строки запроса в SwaggerUI? Когда я использую Почтальон с запросом HTTP: // локальный: 50353 / контакты / фильтр фильтры [0] .PropertyName = имя и фильтры [0] .Operator = Равно и фильтры [0] .Value = 18 она работает нормально, но когда я использую SwaggerUI его привязку пустой модели и передать строку запроса следующим образом: [HttpGet] [Маршрут ({= фильтры фильтры% 5B0% 5D.PropertyName% 3Dname% 26filters% 5B0% 5D.Operator% 3DEqual% 26filters% 5B0% 5D.Value% 3D18 & фильтры =?} "/ контакты / фильтр")] [ValidateModelState] [SwaggerOperation ( "PostContactFilter")] [SwaggerResponse (StatusCode: 200, тип: TypeOf (Список), описание: "запрос Успешный контакт")] [SwaggerResponse (StatusCode: 204, тип : TypeOf (контакт), описание: "Нет содержания" )] общедоступный виртуальный GetContacts IActionResult ([FromQuery] FiltersModel filtersModel) {результат вар = _logic.GetContacts (filtersModel); если (результат нулевой || result.Count == 0) возвращают NoContent (); еще вернуться Ok (результат); }
cargt4
1

голосов
2

ответ
609

Просмотры

API исследователь / панель для Swagger

У нас есть ряд REST API, микро-услуг, которые используют Swagger для документации, каждый из которых выполнен в виде отдельного веб-приложение. Кто-нибудь знает продукт, который может быть использован для представления эксплореров или приборной панели для всех этих интерфейсов, так что клиенты / пользователи могут просто перейти на один URL, чтобы получить подробную информацию о всех наших API. Например, мы имеем: http://wwww.blah.com/app1/api-docs http://wwww.blah.com/app2/api-docs Но мы хотели бы возможность представлять комбинацию обоих Docs через один URL. Благодаря Ник
nickcodefresh
1

голосов
1

ответ
700

Просмотры

Добавить документацию по API на сайт, используя Swagger документ

У меня есть основной сайт построен, и Кураж документ JSON файл моего API. Я не уверен в том, как на самом деле добавить данные из документа на сайте, так что она может быть просмотрены. Я хочу построить размещенный документацию API. Это пример, приведенный Swagger: http://petstore.swagger.wordnik.com/#!/pet/addPet ли я просто скачать Swagger UI и использовать его в сочетании с файлом JSON. Но я не уверен, по достижению этой цели. Любые советы о том, как идти о создании чего-то, как это было бы очень полезно.
user3461851
1

голосов
1

ответ
3.5k

Просмотры

Кураж + весна-загрузка = CORS проблема?

Я пытаюсь настроить развязность в моем проекте. У меня следующий класс SwaggerConfiguration: @EnableSwagger @Configuration @ComponentScan (basePackages = { "my.package"}) общественный класс SwaggerConfig расширяет WebMvcConfigurerAdapter {@Override общественного недействительный addResourceHandlers (ResourceHandlerRegistry реестр) {registry.addResourceHandler (SwaggerSpringMvcUi.WEB_JAR_RESOURCE_PATTERNS) .addResourceLocations ( SwaggerSpringMvcUi.WEB_JAR_RESOURCE_LOCATION) .setCachePeriod (0); } @Bean общественного InternalResourceViewResolver getInternalResourceViewResolver () {InternalResourceViewResolver распознаватель = новый InternalResourceViewResolver (); resolver.setPrefix (SwaggerSpringMvcUi.WEB_JAR_VIEW_RESOLVER_PREFIX); распознаватель. setSuffix (SwaggerSpringMvcUi.WEB_JAR_VIEW_RESOLVER_SUFFIX); вернуться распознаватель; } @Override общественного недействительный configureDefaultServletHandling (DefaultServletHandlerConfigurer configurer) {configurer.enable (); }} К сожалению, я получаю не удается прочитать с сервера. Он не может иметь соответствующие параметры контроля доступа происхождения. Таким образом, после быстрого исследования, я узнал, что мне нужно добавить CORSFilter преодолеть это: @Component общественного класса SimpleCORSFilter реализует фильтр {общественности недействительным doFilter (ServletRequest REQ, ServletResponse Рез, FilterChain цепь) броски IOException, ServletException {HttpServletResponse ответ = (HttpServletResponse) Рез; response.setHeader ( "Access-Control-Allow-Origin", "*"); response.setHeader ( "Access-Control-Allow-Methods" , "POST, GET, OPTIONS, DELETE"); response.setHeader ( "Access-Control-Max-Age", "3600"); response.setHeader ( "Access-Control-Allow-Headers", "X-Requested-с"); chain.doFilter (REQ, разрешение); } Общественного недействительными инициализации (FilterConfig FilterConfig) {} общественного недействительными уничтожить () {}} Я проверил с CURL - заголовок изменяется должным образом, но Кураж по-прежнему не работает (то же самое сообщение об ошибке, как предыдущий). Есть идеи? } Общественного недействительными инициализации (FilterConfig FilterConfig) {} общественного недействительными уничтожить () {}} Я проверил с CURL - заголовок изменяется должным образом, но Кураж по-прежнему не работает (то же самое сообщение об ошибке, как предыдущий). Есть идеи? } Общественного недействительными инициализации (FilterConfig FilterConfig) {} общественного недействительными уничтожить () {}} Я проверил с CURL - заголовок изменяется должным образом, но Кураж по-прежнему не работает (то же самое сообщение об ошибке, как предыдущий). Есть идеи?
slnowak
1

голосов
1

ответ
265

Просмотры

Как определить возможные возвращаемые значения с Swagger.io

У меня есть вызов API, чей ответ включает в себя поле состояния с большим количеством потенциальных кодов состояния. Эти коды являются числовыми и, следовательно, не требует пояснений. Использование Swagger.io как я могу создать таблицу кодов состояния с их соответствующим описанием?
1

голосов
1

ответ
636

Просмотры

How to pass multiple authorization keys to swagger-js?

Использование чванства-UI версии 2.1.0 Я пытаюсь передать несколько Params авторизации в URL запрошенной. Глядя на примере, приведенном на GitHub я пробовал: вар api_key = «api_key», имя пользователя = «имя пользователя»; swaggerUi.api.clientAuthorizations.add ( 'api_key', новый SwaggerClient.ApiKeyAuthorization ( 'api_key', api_key, 'запрос')); swaggerUi.api.clientAuthorizations.add ( 'имя пользователя', новый SwaggerClient.ApiKeyAuthorization ( 'имя пользователя', имя пользователя, 'запрос')); Но это приводит только первые один из них передается в XHR, например: http://127.0.0.1:8000/api/v1/capability?api_key=api_key Если я поменять порядок: swaggerUi.api.clientAuthorizations.add ( 'имя пользователя', новый SwaggerClient.ApiKeyAuthorization ( 'имя пользователя', имя пользователя, 'запрос')); swaggerUi.api.clientAuthorizations. добавить ( 'api_key', новый SwaggerClient.ApiKeyAuthorization ( 'api_key', api_key, 'запрос')); Тогда: http://127.0.0.1:8000/api/v1/channel?username=username Я также попытался с помощью объекта обозначений в оных: swaggerUi.api.clientAuthorizations.add ({ «api_key»: новый SwaggerClient.ApiKeyAuthorization ( "api_key", api_key, "запрос"), 'имя пользователя': новый SwaggerClient.ApiKeyAuthorization ( "имя пользователя", имя пользователя, "запрос")}); Но опять-таки только один параметр был принят: http://127.0.0.1:8000/api/v1/capability?api_key=api_key Названия функции предполагает, что это должно быть возможно передать несколько Params авторизации без каких-либо столкновений, но практика показывает, в противном случае , //127.0.0.1:8000/api/v1/channel?username=username Я также попытался с помощью объекта обозначений в оных: swaggerUi.api.clientAuthorizations.add ({ «api_key»: новый SwaggerClient.ApiKeyAuthorization ( «api_key» , api_key, "запрос"), 'имя пользователя': новый SwaggerClient.ApiKeyAuthorization ( "имя пользователя", имя пользователя, "запрос")}); Но опять-таки только один параметр был принят: http://127.0.0.1:8000/api/v1/capability?api_key=api_key Названия функции предполагает, что это должно быть возможно передать несколько Params авторизации без каких-либо столкновений, но практика показывает, в противном случае , //127.0.0.1:8000/api/v1/channel?username=username Я также попытался с помощью объекта обозначений в оных: swaggerUi.api.clientAuthorizations.add ({ «api_key»: новый SwaggerClient.ApiKeyAuthorization ( «api_key» , api_key, "запрос"), 'имя пользователя': новый SwaggerClient.ApiKeyAuthorization ( "имя пользователя", имя пользователя, "запрос")}); Но опять-таки только один параметр был принят: http://127.0.0.1:8000/api/v1/capability?api_key=api_key Названия функции предполагает, что это должно быть возможно передать несколько Params авторизации без каких-либо столкновений, но практика показывает, в противном случае , "Запрос"), 'имя пользователя': новый SwaggerClient.ApiKeyAuthorization ( "имя пользователя", имя пользователя, "запрос")}); Но опять-таки только один параметр был принят: http://127.0.0.1:8000/api/v1/capability?api_key=api_key Названия функции предполагает, что это должно быть возможно передать несколько Params авторизации без каких-либо столкновений, но практика показывает, в противном случае , "Запрос"), 'имя пользователя': новый SwaggerClient.ApiKeyAuthorization ( "имя пользователя", имя пользователя, "запрос")}); Но опять-таки только один параметр был принят: http://127.0.0.1:8000/api/v1/capability?api_key=api_key Названия функции предполагает, что это должно быть возможно передать несколько Params авторизации без каких-либо столкновений, но практика показывает, в противном случае ,
Peter Kilczuk
1

голосов
1

ответ
861

Просмотры

Закончено Загрузка информационного ресурса. Оказание Swagger UI

Я пытаюсь добавить кнопку файла загрузки в интерфейсе пользователя. Для этого я изменил чванство-ui.js. Я получил кнопку загрузки файлов там, но в следующий раз, когда я пытаюсь запустить приложение, оно показывает эту ошибку. Я заменил измененный файл с предыдущей, но все же это показывает ошибку. Скажите, пожалуйста, что мне нужно сделать ...
Ashutosh
1

голосов
1

ответ
535

Просмотры

чванство JSON производит нулевое значение, которое он останавливает UI

Я использую swaggerspring MVC -1.0.2 и ДЖЕКСОНА-DataBind 2.6.3.why он производит нулевой value.how остановить это? .Это останавливая чванство UI. JSON { "ParameterType": { "absoluteType": "массив"}, "имя": "Файл", "Описание": "Передайте файл в качестве входных данных", "DefaultValue": "", "требуется": правда, «AllowMultiple «ложь, "allowableValues": нулевой, "ParamType": "запрос", "paramAccess": нулевая}
Anand Mohan
1

голосов
1

ответ
76

Просмотры

ServiceStack Кураж не соответствует пользовательскому маршруту

Я использую ServiceStack Swagger Апи. Я могу генерировать документацию, если мои маршруты имеют параметры после ресурсов, например: / элементов / {Itemid}, если у меня есть маршрут с {} версией / элементы / {Itemid}, я не в состоянии генерировать документацию чванства. Как сгенерировать документацию.
Greens
1

голосов
1

ответ
1k

Просмотры

Как реорганизовать этот Swagger API Spec

У меня есть несколько конечных точек, где у меня есть некоторые стандартные ошибочные ответы, такие как 404, 401, 403 и по умолчанию. Я хочу, чтобы реорганизовать эти ответы на определение Swagger, но я не смог этого добиться. Я попробовал несколько трюков, но это всегда приводило к ошибкам синтаксического анализа. Вот YAML у меня есть. чванство: '2,0' Информация: Название: Мое описание API: My API Описание Версия: 0.0.1 хоста: api.example.com схемы: - протокол HTTPS BasePath: / производит: - применение / JSON пути: / пользователей: получить: OperationID: резюме getUsers: Получить описание пользователей: Получить все пользователи тегов: - Пользователи ответов: «200»: описание: массив схемы пользователей: элементы массива: Тип $ Ссылка: «# / Определения / пользователя» «401»: описание: Строка описание: Тип Имя пользователя Игры: Тип: свойства объекта: ID: Тип: Описание целое: Уникальный идентификатор названия игры: Описание строки: Тип Название игры Ошибка: свойства объекта: Тип код: Тип: Описание целое: HTTP код статуса сообщение: Тип: строка описание: ошибка описания сообщения Обратите внимание на повторяющиеся ответы в / пользователях и / игры. Как реорганизовать и переместить их определения? HTTP код статуса сообщение: Тип: Строка описание: ошибка описания Сообщения Обратите внимание на повторяющиеся ответы в / пользователях и / игры. Как реорганизовать и переместить их определения? HTTP код статуса сообщение: Тип: Строка описание: ошибка описания Сообщения Обратите внимание на повторяющиеся ответы в / пользователях и / игры. Как реорганизовать и переместить их определения?
Kulbir Saini
1

голосов
1

ответ
217

Просмотры

swashbuckle generates invalid field names

Это кажется, что swashbuckle (5.2.2) порождает недопустимые имена полей. У меня есть модель, которая (частично) выглядит следующим образом, все свойства имеют поле подкладочный с суффиксом «Поле» [System.CodeDom.Compiler.GeneratedCodeAttribute ( «XSD», «4.0.30319.17929»)] [System.SerializableAttribute () ] [System.Diagnostics.DebuggerStepThroughAttribute ()] [System.ComponentModel.DesignerCategoryAttribute ( "код")] [System.Xml.Serialization.XmlTypeAttribute (AnonymousType = истина, пространство имен = "HTTP: //SomeCompany.Web.Service")] [System.Xml.Serialization.XmlRootAttribute (пространство имена = "HTTP: //SomeCompany.Web.Service", IsNullable = ложь)] общественное GetOrderLines частичного класса {частная строка orderNumberField; /// [System.Xml.Serialization. XmlElementAttribute (IsNullable = истина)] публичная строка ORDERNUMBER {получить {вернуться this.orderNumberField; } Множество {this.orderNumberField = значение; }}} Метод контроллера подписи выглядит следующим образом: общественные GetOrderLinesResponse Get ([FromUri] GetOrderLines запрос) {} Сгенерированный документация выглядит следующим образом: Это использует имена частных полей вместо использования имен свойств. Это ожидаемое поведение? Есть ли способ, что я могу работать вокруг этого и получить фактическое свойство вместо этого? общественного GetOrderLinesResponse Get ([FromUri] GetOrderLines запрос) {} Сгенерированный документация выглядит следующим образом: Это использует имена частных полей вместо того, чтобы использовать имена свойств. Это ожидаемое поведение? Есть ли способ, что я могу работать вокруг этого и получить фактическое свойство вместо этого? общественного GetOrderLinesResponse Get ([FromUri] GetOrderLines запрос) {} Сгенерированный документация выглядит следующим образом: Это использует имена частных полей вместо того, чтобы использовать имена свойств. Это ожидаемое поведение? Есть ли способ, что я могу работать вокруг этого и получить фактическое свойство вместо этого?
Pelle
1

голосов
1

ответ
359

Просмотры

Есть ли springfox-swagger2 поддержку интерфейса, выбирая несколько файлов одновременно?

Я использую Spring бутс и интегрированное чванство-Ui (springfox-swagger2), и я хочу, чтобы иметь возможность выбрать загружать несколько файлов одновременно. К сожалению, Сваггер UI не появляется, чтобы позволить этому, по крайней мере, не дать мой метод контроллера. Мой метод контроллера подпись: @ApiOperation (значение = «Пакетная загрузка товары обложка», заметки = «Пакетная загрузка товаров обложки», ответ = UploadCoverResultDTO.class, responseContainer = «Список») Результат общественного uploadGoodsCover (@ApiParam (значение = " массив изображения», AllowMultiple = правда, требуется = истина) @RequestPart („образ“) MultipartFile [] файлы) броски IOException {Кураж UI генерироваться: Но я ожидал, что пользовательский интерфейс похож на это: это более удобно выбрать все фотографии в папки в один присест, а не выбирать один момент времени, например: Есть ли swagger2 springfox-поддерживают это? Если да, то какие изменения мне нужно сделать?
zhuguowei
1

голосов
1

ответ
605

Просмотры

Кураж UI для Rails API с помощью Serializer ActiveModel в

Мне было интересно, если кто-нибудь делал это раньше, когда они создают документы API с использованием Swagger интерфейса для API также не порожденного Swagger. Вот что простой пример шахты выглядит следующим образом: класс Api :: V1 :: UsersController <Api :: V1 :: BaseController swagger_controller: пользователи, 'Users' swagger_api: показать сделать резюме 'Возвращает пользователя' параметров: путь,: Удостоверение личности, : целое число,: по желанию, "Идентификатор пользователя" отмечает '/ API / v1 / пользователей /: идентификатор' ответа: хорошо, "Успех",: пользователи ответ: несанкционированный ответ: not_acceptable ответа: not_found конца четкости показать пользователь = User.find ( Титулы [: идентификатор]) оказывают (JSON: Апи :: V1 :: UserSerializer.new (пользователь) .to_json) конец конец Я генерироваться чванства документы с передним чванства: документы и может достигать HTTP: // локальный: 3000 / API-документы.
Peter Kim
1

голосов
1

ответ
371

Просмотры

Генерация статического документации API из схемы?

У меня есть приложения Коа / Экспресс и хотел бы, чтобы создать статическую документацию, основанную на аннотацию к различным маршрутам API. Кураж, кажется, хорошо, но все пакеты, я нашел не генерировать документацию, но провести его с самого API. Я хочу, чтобы в документацию API, чтобы быть отделена от моего API. Существуют модули и другие проекты OS предлагает это?
Hedge
1

голосов
1

ответ
3.1k

Просмотры

How to configure Swagger in Web API 2 to POST OAuth2 authentication request?

I have recently started a Web API 2 project in Visual Studio 2012 using OWIN middleware to authenticate users with OAuth2. I incorporated token based authentication as outlined on this tutorial (Token Based Authentication). The authentication part works great. I have added some testing API methods and I wanted to hook up Swagger for my API documentation. I got that part working too, with the exception that the API calls from Swagger fail on authorization. After research, I found Erik Dahl's post about how to hook up Swagger to OWIN middleware. After I configured my Swagger according to the post, I now see the authenticate buttons on the Swagger UI next to each API method. However, when trying to authenticate, the authentication within Swagger is done using a GET request. The authentication on the web API though requires it to be POST request. Is it possible to configure Swagger make the authentication request a POST? If not, should I allow my API to accept GET requests for token authentication? What would be the best approach to make this work? Note: The request still hits my authentication logic, but the client_id and client_secret are not passed in a GET request, only in a POST request. Here's my Swagger config: httpConfig .EnableSwagger(c => { c.SingleApiVersion("v1", "Sample API"); c.ApiKey("token") .Description("API Key Authentication") .Name("Bearer") .In("header"); c.OAuth2("oauth2") .AuthorizationUrl("/oauth/token") .Flow("implicit") .Description("OAuth2 authentication") .Scopes(scopes => { scopes.Add("sampleapi", "Sample API"); }); c.OperationFilter(); }) .EnableSwaggerUi(c => { c.EnableOAuth2Support( clientId: "Sample_App", clientSecret: "xxxxx", realm: "test-realm", appName: "Swagger UI"); }); And here's my OAuth config: app.CreatePerOwinContext(ApiClientRepo.Create); app.CreatePerOwinContext(MeetingRegistrantRepo.Create); OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions() { //For Dev enviroment only (on production should be AllowInsecureHttp = false) AllowInsecureHttp = true, TokenEndpointPath = new PathString("/oauth/token"), AccessTokenExpireTimeSpan = TimeSpan.FromDays(1), Provider = new CustomOAuthProvider(), AccessTokenFormat = new CustomJwtFormat("http://localhost:51071"), RefreshTokenProvider = new SimpleRefreshTokenProvider() }; // OAuth 2.0 Bearer Access Token Generation app.UseOAuthAuthorizationServer(OAuthServerOptions);
Sebbo
1

голосов
1

ответ
882

Просмотры

Кураж генерировать определение пользовательского RESTful API (C # .NET)

Я пытаюсь использовать чванство для моего RESTful API (.net и C #). Это обычай RESTful API (не ASP.NET Web API, ни веб-приложение). открытый интерфейс IEmployee {[CustomSecurity (Session.Required)] EmployeeResponse GetEmployee (EmployeeRequest запроса); } Я использую NSwag (https://github.com/NSwag/NSwag), который имеет NSwagStudio для создания спецификации, но без успеха, так как не спекуляция способа. Есть ли способ сделать это любым другим способом? Как сделать чванство понять мой пользовательский атрибут на работу?
user1527762
1

голосов
1

ответ
628

Просмотры

Чванство ответы HTTP $ реф

Я новичок в Swagger, и я работаю на операции API, которые создают общие коды ответа HTTP: - «401: Несанкционированный„403“: Запретный„404“: не найдены„500“:: Внутренняя ошибка сервера Я попытался $ исх: # / определения / ответы путем определения ответов, но получил сообщение об ошибке. Есть ли способ сделать это ?, чтобы избежать избыточного блока кода после каждой операции. Любая помощь могла бы быть полезна. заранее спасибо
0_o
1

голосов
1

ответ
91

Просмотры

swagger listing api for worknik

Я использовал чванство-экспресс модуль НПМ для настройки апи-документации параллельно к серверу, так что помочь УБС, чтобы следить за всеми APIs. Что у меня есть структура папок / / апи чванство / swagger.json swagger.yml / чванство / * Имея все индексный файл и конфиги, как указано их как общественный реж * / Моя конфигурация среднего изделия, как эта переменная чванства = требуется (» чванство-экспресс); app.use (swagger.init (приложение, {apiVersion: '1.0', swaggerVersion: '1.0', swaggerURL: '/ чванство', swaggerJSON: 'апи / чванство / swagger.json', swaggerUI: './swagger/' , BasePath: 'HTTP: // локальный: 1222', информация: {название: 'чванство-экспресс образец приложение', описание: 'Кураж + Экспресс = {чванство-экспресс}'}, APIs: [ 'апи / чванство / swagger.yml'], промежуточного программного обеспечения: функция (REQ, разреш) {}})); Мой сервер работает на порту 1222. Теперь хотя SwaggerUI успешно загружен, но его чтение от домена Wordnik в апи. Как бы это прочитать APIs от моего swagger.yml Если я упоминая swagger.yml то, Что релевантность и использование swagger.json Что discoverURL в SwaggerUI? Если я упомянуть мой JSon путь (HTTP: // локальный: 1222 / чванство /) в том, что она заканчивается с ошибкой, как "discoveryUrl BasePath должен быть URL. Является ли их каким-либо образом я могу перечислить все APIs параллельно с сервером? поэтому он может быть проверен, а? Я хочу, чтобы это с развязностью. Теперь хотя SwaggerUI загружен успешно, но его чтение API от домена Wordnik в. Как бы это прочитать APIs от моего swagger.yml Если я упоминая swagger.yml то, Что релевантность и использование swagger.json Что discoverURL в SwaggerUI? Если я упомянуть мой JSon путь (HTTP: // локальный: 1222 / чванство /) в том, что она заканчивается с ошибкой, как "discoveryUrl BasePath должен быть URL. Является ли их каким-либо образом я могу перечислить все APIs параллельно с сервером? поэтому он может быть проверен, а? Я хочу, чтобы это с развязностью. Теперь хотя SwaggerUI загружен успешно, но его чтение API от домена Wordnik в. Как бы это прочитать APIs от моего swagger.yml Если я упоминая swagger.yml то, Что релевантность и использование swagger.json Что discoverURL в SwaggerUI? Если я упомянуть мой JSon путь (HTTP: // локальный: 1222 / чванство /) в том, что она заканчивается с ошибкой, как "discoveryUrl BasePath должен быть URL. Является ли их каким-либо образом я могу перечислить все APIs параллельно с сервером? поэтому он может быть проверен, а? Я хочу, чтобы это с развязностью. discoveryUrl BasePath должен быть URL. Является ли их каким-либо образом я могу перечислить все APIs параллельно с сервером? поэтому он может быть проверен, а? Я хочу, чтобы это с развязностью. discoveryUrl BasePath должен быть URL. Является ли их каким-либо образом я могу перечислить все APIs параллельно с сервером? поэтому он может быть проверен, а? Я хочу, чтобы это с развязностью.
Sankalp
1

голосов
1

ответ
471

Просмотры

включает YAML файл в качестве ссылки в другой YAML файл чванство

Я хочу, чтобы включить файл YAML в моем главном файле YAML я использовал исх ключевое слово, но что один не работает, ниже мой YAML главный YAML файл --- чванство: «2.0» информация: $ реф: /another.yaml версия: «1» название: «тест» хозяин: «localhost.com:8080» BasePath: «/ тест» another.yaml описание:> ## проверить Это испытание как файл находится в том же каталоге, когда я запускаю его я не могу видеть содержание another.yaml в развязность Ui. Как я могу добиться этого, или есть какой-либо модуль узла для достижения этой цели.
JN_newbie

Просмотр дополнительных вопросов