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

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

голосов
1

ответ
232

Просмотры

Asp.net Web API ядра 2 и Сваггер при добавлении [Routing] атрибут, Response Content Type '* / XML' исчезает

Я использую Asp.net web.api ядро ​​2.0 и Swashbuckle 1.1.0. Входные и Ouput XmlSerializer был добавлен. При добавлении [Route] атрибут действия, чванство UI Response тип содержимого «текст / XML» или «приложение / XML» удаляется из списка опций. Любые идеи, почему это встречающееся? [HttpGet ( ".... ")] общественность асинхронной задачи Get (..) [HttpGet] [Маршрут (" ByFilter")] общественный асинхронном Task GetByFilter (...) С уважением Floyd
Floyd
1

голосов
1

ответ
375

Просмотры

генерировать отдельный файл углового сервиса для каждого контроллера в моем апи

это производит один выход, содержащий все генерирующие клиентов (угловые услуги) является возможность генерировать различные результаты (различные service.ts) для каждого контроллера это мой текущий код строки Surl = «HTTP: // локальный: 7325 / чванство / v1 / swagger.json "; вар документ = SwaggerDocument.FromUrlAsync (Surl) .Result; Настройки переменная = новые SwaggerToTypeScriptClientGeneratorSettings {ИмяКласса = "{контроллер} Сервис", Шаблон = TypeScriptTemplate.Angular, InjectionTokenType = InjectionTokenType.InjectionToken, HttpClass = HttpClass.HttpClient, GenerateDtoTypes = верно, BaseUrlTokenName = "API_BASE_URL",}; вар генератор = новый SwaggerToTypeScriptClientGenerator (документ, установка); вар код = generator.GenerateFile (); // .... // код записи на диск установлен пакет: NSwag.CodeGeneration.TypeScript кроме того, можно генерировать код из сборки, а не из спецификации файла развязности, как это делает NSwagStudio?
alex
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

голосов
1

ответ
331

Просмотры

Swashbuckle не может изменить index.html (CustomAsset не существует)

Я использую Swashbuckle для моего основного проекта ASP.NET, и я хочу изменить мой index.html, и я увидел эту страницу: https://github.com/domaindrivendev/Swashbuckle/tree/swagger_2.0#provide-your-own -indexhtml, что объясняет, как именно это сделать, но дело в том, что метод метод CustomAsset, кажется, не существует больше. Я могу использовать метод InjectOnCompleteJavascript и InjectStylesheet без каких-либо проблем, но нет CustomAsset включить мою страницу HTML. Вы знаете, если есть другой способ заменить чванства UI? Спасибо, Клод
Claude Roy
1

голосов
0

ответ
114

Просмотры

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

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

голосов
0

ответ
636

Просмотры

Springfox Swagger2 и гуавы - java.lang.StackOverflowError

Я добавил Springfox Swagger2 2.8.0 в моем проекте Spring загрузки 2 и во время запуска приложения, запустить в следующем номере: com.google.common.util.concurrent.ExecutionError: java.lang.StackOverflowError в com.google.common. cache.LocalCache $ Segment.get (LocalCache.java:2216) ~ [гуава-23.0.jar: на] в com.google.common.cache.LocalCache.get (LocalCache.java:4147) ~ [гуава-23.0.jar : на] в com.google.common.cache.LocalCache.getOrLoad (LocalCache.java:4151) ~ [гуавы-23.0.jar: Na] в com.google.common.cache.LocalCache $ LocalLoadingCache.get (LocalCache.java : 5140) ~ [гуава-23.0.jar: на] в com.google.common.cache.LocalCache $ LocalLoadingCache.getUnchecked (LocalCache.java:5146) ~ [гуава-23.0.jar: на] в springfox.documentation.spring .web.scanners.CachingOperationReader.read (CachingOperationReader.java:57) ~ [springfox-весна-веб-2.8.0.jar: 2.8,0] при springfox.documentation.spring.web.scanners.ApiDescriptionReader.read (ApiDescriptionReader.java:70) ~ [springfox-пружинно-веб-2.8.0.jar: 2.8.0] на springfox.documentation.spring.web. scanners.ApiListingScanner.scan (ApiListingScanner.java:90) [springfox-пружинно-веб-2.8.0.jar: 2.8.0] на springfox.documentation.spring.web.scanners.ApiDocumentationScanner.scan (ApiDocumentationScanner.java:71) [springfox-пружинно-веб-2.8.0.jar: 2.8.0] на springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.scanDocumentation (DocumentationPluginsBootstrapper.java:96) [springfox-пружинно-веб-2.8.0.jar : 2.8.0] на springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.start (DocumentationPluginsBootstrapper.java:158) [springfox-пружинно-веб-2.8.0.jar: 2.8.0] на org.springframework.context. служба поддержки.DefaultLifecycleProcessor.doStart (DefaultLifecycleProcessor.java:183) [весна-контекст-5.0.1.RELEASE.jar: 5.0.1.RELEASE] в org.springframework.context.support.DefaultLifecycleProcessor.access $ 200 (DefaultLifecycleProcessor.java:52) [ весна-контекст-5.0.1.RELEASE.jar: 5.0.1.RELEASE] в org.springframework.context.support.DefaultLifecycleProcessor $ LifecycleGroup.start (DefaultLifecycleProcessor.java:358) [весна-контекстуальной 5.0.1.RELEASE. банка: 5.0.1.RELEASE] на org.springframework.context.support.DefaultLifecycleProcessor.startBeans (DefaultLifecycleProcessor.java:159) [весенне-контекст-5.0.1.RELEASE.jar: 5.0.1.RELEASE] на org.springframework .context.support.DefaultLifecycleProcessor.onRefresh (DefaultLifecycleProcessor.java:123) [весенне-контекстно-5.0.1.RELEASE.jar: 5.0.1.RELEASE] на org.springframework.context.support.AbstractApplicationContext.finishRefresh (AbstractApplicationContext.java:884) [весенне-контекстно-5.0.1.RELEASE.jar: 5.0.1.RELEASE] на org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh (ServletWebServerApplicationContext.java:143) [весенне-загрузки-2.0.0.M6.jar: 2.0.0.M6] на org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:552) [весенне-контекстно-5.0.1.RELEASE.jar : 5.0.1.RELEASE] на org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh (ServletWebServerApplicationContext.java:122) [весна-загрузки 2.0.0.M6.jar: 2.0.0.M6] на org.springframework.boot.SpringApplication.refresh (SpringApplication.java:751) [весенне-загрузки-2.0.0.M6.jar: 2.0.0.M6] на org.springframework.boot.SpringApplication.refreshContext (SpringApplication.java: 387) [весна-загрузки 2.0.0.M6.банка: 2.0.0.M6] на org.springframework.boot.SpringApplication.run (SpringApplication.java:327) [весна-загрузке 2.0.0.M6.jar: 2.0.0.M6] на org.springframework.boot .SpringApplication.run (SpringApplication.java:1245) [весенне-загрузки-2.0.0.M6.jar: 2.0.0.M6] на org.springframework.boot.SpringApplication.run (SpringApplication.java:1233) [весенне загрузки 2.0.0.M6.jar: 2.0.0.M6] в com.decisionwanted.api.Application.main (Application.java:40) [/ классы: на] вызвано следующими причинами: java.lang.StackOverflowError: нуль на java.util.Currency.getInstance (Currency.java:318) ~ [па: 1.8.0_152] на java.util.Currency.getInstance (Currency.java:399) ~ [па: 1.8.0_152] на java.text. DecimalFormatSymbols.initialize (DecimalFormatSymbols.java:638) ~ [па: 1.8.0_152]. на java.text.DecimalFormatSymbols (DecimalFormatSymbols.java:113) ~ [па: 1.8.0_152] на sun.util.locale.provider.DecimalFormatSymbolsProviderImpl.getInstance (DecimalFormatSymbolsProviderImpl.java:85) ~ [па: 1.8.0_152] на java.text.DecimalFormatSymbols.getInstance (DecimalFormatSymbols.java:180) ~ [па: 1.8.0_152] на java.util.Formatter.getZero ( Formatter.java:2283) ~ [па: 1.8.0_152] на java.util.Formatter (Formatter.java:1892) ~ [па: 1.8.0_152].. на java.util.Formatter (Formatter.java:1914) ~ [па: 1.8.0_152] на java.lang.String.format (String.java:2940) ~ [па: 1.8.0_152] на springfox.documentation.spring.web.readers.parameter.ModelAttributeParameterExpander.nestedParentName (ModelAttributeParameterExpander. Java: 259) ~ [springfox-пружинно-веб-2.8.0.jar: 2.8.0] на springfox.documentation.spring.web.readers.parameter.ModelAttributeParameterExpander.expand (ModelAttributeParameterExpander.java:97) ~ [springfox-весна -web-2.8.0.jar: 2.8.0] на springfox.documentation.spring.web.readers.parameter.ModelAttributeParameterExpander.expand (ModelAttributeParameterExpander.java:114) ~ [springfox-пружинно-веб-2.8.0.jar: 2.8.0] на springfox.documentation.spring.web.readers.parameter .ModelAttributeParameterExpander.expand (ModelAttributeParameterExpander.java:114) ~ [springfox-пружинно-веб-2.8.0.jar: 2.8.0] на springfox.documentation.spring.web.readers.parameter.ModelAttributeParameterExpander.expand (ModelAttributeParameterExpander.java: 114) ~ [springfox-пружинно-веб-2.8.0.jar: 2.8.0] на springfox.documentation.spring.web.readers.parameter.ModelAttributeParameterExpander.expand (ModelAttributeParameterExpander.java:114) ~ [springfox-весна-веб -2.8.0.jar: 2.8.0] на springfox.documentation.spring.web.readers.parameter.ModelAttributeParameterExpander.expand (ModelAttributeParameterExpander.java:114) ~ [springfox-пружинно-веб-2.8.0.jar: 2.8.0] на springfox.documentation.spring.web.readers.parameter.ModelAttributeParameterExpander.expand (ModelAttributeParameterExpander.java:114) ~ [springfox-весна-веб -2.8.0.jar: 2.8.0] на springfox.documentation.spring.web.readers.parameter.ModelAttributeParameterExpander.expand (ModelAttributeParameterExpander.java:114) ~ [springfox-весна-веб-2.8.0.jar: 2.8. 0] в springfox.documentation.spring.web.readers.parameter.ModelAttributeParameterExpander.expand (ModelAttributeParameterExpander.java:114) ~ [springfox-пружинно-веб-2.8.0.jar: 2.8.0] на springfox.documentation.spring. web.readers.parameter.ModelAttributeParameterExpander.expand (ModelAttributeParameterExpander.java:114) ~ [springfox-пружинно-веб-2.8.0.jar: 2.8.0] на springfox.documentation.spring.web.readers.parameter.ModelAttributeParameterExpander.expand (ModelAttributeParameterExpander.java:114) ~ [springfox-весна-веб-2.8.0.jar: 2.8.0] Что может быть причиной этой проблемы и как это исправить?
alexanoid
1

голосов
2

ответ
504

Просмотры

Есть ли способ автоматически генерировать чванство теги precomipled функций C # Azure?

Кто-нибудь известно о каких-либо атрибутах .NET, которые могут быть использованы для аннотирования прекомпилированного C # Azure функции, поэтому он может генерировать чванство тегов автоматически? Например, я хотел бы автоматически создать запись "метка" в Swagger: / API / v1 / ревизия: получить: OperationID: / API / v1 / версия / получить тег: - Система производит: [] Потребляет: [] параметры : [] описание: Возвращает версию API ответов: '200': описание: безопасность работы Success: - apikeyQuery: [] Вот мой C # функция: публичный статический класс VersioningService {[FunctionName ( "ApiVersion")] общественности статической асинхронной задач ApiVersion ([HttpTrigger (AuthorizationLevel.Function, "получить", Route = "v1 / ревизию")] HttpRequestMessage REQ, TraceWriter журнал) {вернуться req.CreateResponse (HttpStatusCode.OK, "API Версия: 1,0340"); }}
TruthSeeker
1

голосов
1

ответ
160

Просмотры

Метод не допускается в Swagger UI после добавления контроллера

У меня есть Кураж добавлен к проекту, и он работает https://zapodaj.net/217c8a0dcf348.png.html. После добавления @RestController контроллера (значение = "/ регистр") общественного класса RegisterRestController {... @PostMapping (потребляет = MediaType.APPLICATION_JSON_VALUE) @ResponseStatus (HttpStatus.CREATED) общественного ResponseEntity регистр (@RequestBody окончательного RegisterDto registerDTO) {этот. userService.createUser (registerDTO); Окончательные HttpHeaders httpHeaders = новые HttpHeaders (); вернуть новый ResponseEntity (httpHeaders, HttpStatus.CREATED); }} Сваггер интерфейс перестает работать https://zapodaj.net/c60c3029b0905.png.html. Kicks "ошибка": "Method Not Allowed", "сообщение": "Метод запроса 'GET' не поддерживается", "статус": "405" я нашел подобную нить на StackOverflow, но я не знаю, как он может мне помочь. Что с этим Swagger?
sdfgsdgsgr
1

голосов
0

ответ
41

Просмотры

Как группировать заголовки в Swagger UI?

[Используя Python, флягу и Swagger UI] Я знаю, что вы можете вызовы методов группы в Swagger UI, но вы можете сгруппировать заголовки, которые делают звонки вместе? Это так что я могу сделать несколько разделов на странице Кураж UI. Хотите группы команд и пользователей вместе, чтобы команды становится подсекция для game_players
zeusking123
1

голосов
0

ответ
169

Просмотры

Проблемы, реализующие развязность в C #

I've created the following webservice: /// /// Get all users from CRS that are not included in the emaillist /// /// string with emails separated by semicolon /// [HttpPost] [Route("api/user/getwurusersnotinlist/")] [SwaggerOperation("UserGetWurUsersNotInList")] public List GetWurUsersNotInList([FromBody] string emailList) { var list = Request.Content.ReadAsStringAsync().Result; var exclude = (emailList??string.Empty).ToLower().Split(';').ToList(); return WurUsers .Where(user => string.IsNullOrEmpty(user.Email) && !exclude.Contains(user.Email.ToLower())) .Select(user => user.Dto()) .ToList(); } As you can see I'm trying to use the [FromBody] Swagger attribute here. On the client side the following code is used to retrieve the user data: StringBuilder sb = new StringBuilder(); var semi = string.Empty; foreach (var user in students) { sb.Append(semi).Append(user.EMail); semi = ";"; } var excludeList = sb.ToString(); var crsUsers = UserServiceClient.UserGetWurUsersNotInList(excludeList); foreach (UserDto crsUser in crsUsers) { ... } The problems with this code are: The emailList is always null The list read from the Request.Content contains the list minus the first 4 characters. Very strange. When the result returns I get an exception saying 'unable to deserialize the response'. Inner: Unexpected character encountered while parsing value:
Paul Sinnema
1

голосов
1

ответ
122

Просмотры

Spring загрузки и новый дизайн Сваггер

У меня есть библиотека Swagger в проекте Spring загрузки и я добавил его, используя следующую зависимость: io.springfox springfox-swagger2 2.7.0 io.springfox springfox-чванство-UI 2.7.0 В настоящее время Кураж UI выглядит на скриншоте ниже: На сайте чванства в Я вижу немного другой дизайн и выглядит лучше: Как я могу добавить тот же дизайн для моего проекта? Спасибо!
Bohdan Korinnyi
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

ответ
151

Просмотры

Форс-Codegen: Как запихнуть JSON блоб в строку

Я использую файл YAML чванство, чтобы определить мой API и генерировать Java код из него. С этой структурой: SomeStructure: свойства объекта: Тип FIELD1: Тип: строка требуется: истинный FIELD2: Тип: строка требуется: истинная field3: Тип: Строка additionalProperties: {} Теперь, когда генерация кода API будет сделана, я хотел бы 3-й поле для выравнивания любого заданного структуру JSON в строку Java. Например, для ввода, как это: { "FIELD1": "value1", "FIELD2": "значение2", "field3": { "subvalue1": "subvalue1", "subvalue2": "subvalue2"}} Я хочу это, чтобы получить карту в строку, содержащую: { "subvalue1": "subvalue1", "subvalue2": "subvalue2" } Я пытался использовать индикатор свободной формы «{}», но очевидно, что это не работает. Можно ли, и как я могу это сделать?
user3384321
1

голосов
0

ответ
99

Просмотры

Отображение $ исх в Swagger YAML

Есть ли чванство анализатор из YAML в Java Map, которая включает в себя отображение $ значение реф из определений?
Lemuel Nabong
1

голосов
0

ответ
267

Просмотры

JsonConvert.DeserializeObject () не может разобрать Swagger типа ответа, который имеет ссылочное типизированное свойство

У меня есть действие WebAPI, который возвращает сильно типизированный объект, имеющий этот класс: MyResponse общественного класса {общественных строковое сообщение {получить; внутреннее множество; } Общественного ChildObject ChildObject {получить; внутреннее множество; }} Swashbuckle генерирует документ в формате JSON Swagger (отредактированный для краткости): { "чванство": "2.0", "информация": { "вариант": "v1", "название": "empApi"}, "хозяин": " локальный: 51299" , "схемы": [ "HTTP"], "пути": { "/ апи / v1 / MyAction": { "пост": {... "ответы": { "200": { «описание «: "OK", "схема": { "$ исх": "# / определения / MyResponse" }}}}}}, "Определения": { "MyResponse": { "типа": "объект", "Свойства": { "Сообщение": { "типа": "строка", "доступен только для чтения": истинный} "ChildObject": { "$ исх": "# / определения / ChildObject", "доступен только для чтения": истинно}}}, "ChildObject": { "Тип": "объект", "свойства": {...} }}} Этот код парсинг работал хорошо, пока я не добавил ChildObject: публичная статическую SwaggerDocument разобрать выражение (строка ЦСИ) {настройки Var = новые JsonSerializerSettings (); вар схемы = новый SchemaResolver (); // Реализует IReferenceResolver, поддерживает словарь settings.ReferenceResolverProvider = () => схемы; вар чванство = JObject.Parse (SRC); .. Вар typesRoot = swagger.Properties (), где (р => p.Name == "Определения") FirstOrDefault (); если (typesRoot! = NULL) {Еогеасп (вар я в typesRoot.Values ​​()) {schemas.AddReference (нуль, "# /" + i.Path.Replace ( "", "/"), JsonConvert.DeserializeObject ( (я, как JProperty) .Value.ToString (), настройки)); }} Вернуть JsonConvert.DeserializeObject (ЦСИ, настройки); } Исключение: Дополнительный контент найден в JSON эталонного объекта. Ссылка объект JSON должен иметь только свойство $ реф. Путь 'properties.ChildObject.readOnly', строка _ _ позиция. в Newtonsoft.Json.Serialization.JsonSerializerInternalReader. ReadMetadataProperties (считыватель JsonReader, тип и OBJECTTYPE, JsonContract и контракт, член JsonProperty, JsonContainerContract containerContract, JsonProperty containerMember, объект existingValue, Object & NEWVALUE, String & ID) Есть ли способ, чтобы сделать JsonConvert справиться с этим, не делая сеттер общественности? (Как я гарантировать, что я могу справиться с чванством документы для WebApis Я не могу изменить?)
Emyr
1

голосов
0

ответ
48

Просмотры

Есть ли возможность в swagger2 создать централизованное чванство документ для двух различных проектов весной загрузок?

У меня есть две пружины загрузки проектов, а именно A и B. Теперь, мне нужно создать централизованную чванство документ для обоих проектов А и В. Любые способы, чтобы сделать это иначе, чем с Maven мульти-модулей? заранее спасибо
Mamatha Desireddy
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

голосов
0

ответ
49

Просмотры

Не в состоянии загрузить микро-службы с помощью загрузки пружины с чванством 2

Я пытаюсь использовать чванство 2 с пружинным ботинке, но я получаю следующее исключение: org.springframework.beans.BeanInstantiationException: Не удалось создать экземпляр [springfox.documentation.swagger.web.SecurityConfiguration]: Фабричный метод «безопасности» бросил исключение ; вложенное исключение составляет java.lang.NoSuchMethodError: springfox.documentation.swagger.web.SecurityConfiguration. Мой класс конфигурации для чванства является: @Configuration @ EnableSwagger2 общественного класса SwaggerConfig {@Bean общественного Ярлык апи () {вернуть новый Docket (DocumentationType.SWAGGER_2) .select () .apis (RequestHandlerSelectors.any ()) .paths (PathSelectors.any ()) .build (); }} И я добавил следующие 2 зависимостей в моем POM: Ио.
1

голосов
0

ответ
127

Просмотры

Необходимо правильно сформировать чванство JSON

Проблема заключается в том, что мне нужно в документации, чтобы показать, что можно перенести поля colums в виде массива и в нем следующие поля (название, описание, created_at, updated_at, автора). JSON успешно создается, но в документации чванство-редактор не видно эти поля / ** * @SWG \ Get (путь = «/ статьи», * теги = { «Статья»}, * кратко = «Получить все статьи» * описание = "Показать список статей", * OperationID = "все", * производит = { "приложения / JSON"}, * @SWG \ Параметр (* имя = "столбцы", * в = "запрос", * описание = «получить конкретные столбцы», * обязательно = ложно, * тип = «массив»,
coding-scripting
1

голосов
1

ответ
1.5k

Просмотры

Преобразование Swagger JSON в AsciiDoc уценкой

Я пытаюсь импортировать Swagger JSON в AsciiDoc. Для этого я пытаюсь преобразовать Swagger JSON в уценку, который может быть прочитан AsciiDoc. Я не могу понять, как это сделать. Я прочитал, что я, вероятно, необходимо использовать swagger2markup. Однако, не будучи программистом на Java, что неясно, как использовать это. Я получил некоторые ключи от этого ответа, но я не могу получить очень далеко. Она включает в себя использование J блока, и я не знаю, что делать с этим, и все, что требуется. Кто-нибудь понял, как это сделать?
Diana Bishop
1

голосов
0

ответ
77

Просмотры

Как добавить ответ на развязность экспорт?

Я использую лапку экспортировать свои API вызовы на развязность док. Эти «запросы» в настоящее время генерация правильно, но не «ответы». Они просто говорят: не по умолчанию нет описания отклика был предоставлен для этой операции Как я могу добавить ответ? Пример моего файла: REDOC тело {маржа: 0; обивка: 0; } Снимок экрана Paw: Снимок экрана выхода:
mikelovelyuk
1

голосов
0

ответ
924

Просмотры

Чванство Аннотация не показывает пример тела

При работе с чванством аннотаций не представляется возможным создать пример для тела запроса. Вот идет аннотацию материал для RESTful ресурсов / конечной точки: @POST @Path ( "/ {carId} / разговор") @ApiImplicitParams ({@ApiImplicitParam (имя = "авторизации", значение = "AppJWT маркер", ParamType = " заголовок "требуется = истина), @ApiImplicitParam (имя = "ВКЛ-иМЕНИ", значение = "The ConsumerJWS лексем", Paramtype = "заголовок", требуется = истина), @ApiImplicitParam (имя = "v", значение =" версия API», DefaultValue = "3", Paramtype = "запрос", требуется = истина)}) @ManagedAsync @ApiOperation (значение = "бла", отмечает = "") @ApiResponses (значение = {@ApiResponse (код = 200 , сообщение = "л",
kladderradatsch
1

голосов
0

ответ
293

Просмотры

Create Swagger Model from Class

Я работаю на документирование API, сделанное с Resteasy + Джексоном в Java с помощью Swagger / OpenAPI (фляги версии чванства - [] - 1.5.18.jar). У меня есть конечная точка, которая может принимать в одном из нескольких объектов в виде строк. Я нашел способ, чтобы добавить модели с использованием ReaderListener развязности в; Однако, я хочу, чтобы иметь возможность автоматически генерировать модели, так как они все еще находятся в движении. Я обнаружил, что я могу использовать ModelConverters для создания схем из класса; Однако, я не смог найти способ легко генерировать модели Propertys из этих схем. Я нашел этот пример, но он включает в себя добавление много дополнительного кода. Существует ли какая-либо функция, которые будут делать это и получить все внутреннюю Schemas? Или есть лучший способ перейти от класса модели? Вот мой текущий код: @SwaggerDefinition общественного класса SwaggerModelDefinitionAdder реализует ReaderListener {@Override общественного недействительными AfterScan (Читатель arg0, Сваггер чванство) {} @Override общественного недействительными beforeScan (Читатель arg0, развязность чванство) {ModelConverters Мс = новые ModelConverters (); Карта class1Schemas = mc.read (Class1.class); Карта class2Schemas = mc.read (Class2 [] класс.); Окончательный Модель class1Model = новый ModelImpl () .name ( "Class1") .type ( "Class1"); class1Model.setReference ( "# / Определения / Class1"); Окончательный Модель class2Model = новый ModelImpl () .name ( "Class2") .type ( "Class2"); class2Model.setReference ( "# / Определения / Class2"); Карта определение = новый HashMap (); definitions.put ( "Class1", class1Model); definitions.put ( "Class2", class2Model); swagger.setDefinitions (определения); }}
Samvawa
1

голосов
0

ответ
101

Просмотры

Кураж, как установить класс шаблона в качестве API конечного типа возвращаемого значения

Я использую чванство документировать свой API и один из моих конечных точек возвращается общий тип QueryResult: @GET @Path ( «/ запрос») @ApiOperation (ответ = QueryResult.class) публичное QueryResult queryHttpGet () {возвратить новый QuertyResult ( ); } Тем не менее, я не могу установить ответ = QueryResult.class в @ApiOperation, так что я не знаю, фактический тип в моем файле определения API, который генерируется. Есть несколько дискуссий: https://github.com/swagger-api/swagger-core/issues/498 https://github.com/kongchen/swagger-maven-plugin/issues/416 анс некоторое упоминание реализовать небольшой регулировочная шайба класса: класс MyTypeQueryResult общественности расширяет QueryResult {}, а затем передать ответ = MyTypeQueryResult к @ApiOperation, но я не могу заставить его работать. Любые идеи, как я могу видеть общий тип в моем определении развязности?
user1981275
1

голосов
1

ответ
221

Просмотры

возникли проблемы с доступом к развязности в Web API на удаленных среды?

Я настроил Swagger для моего Web API 2.2 приложения и загружает локально, но я получаю ошибку CORS при попытке доступа к нему на удаленном сервере. Кроме того, чтобы добраться до страницы развязности, я должен быть очень четко с URL. Например: https://example.com/swagger/ui/index В противоположность: example.com/swagger/ Я думаю, что я встретил несколько аналогичный вопрос о предыдущем проекте, где я должен был обеспечить полный явный URL, как показано в мой первый пример, но на этом предыдущем проекте, используя длинную форму URL отображается на странице рабочего чванства, как ожидалось. Является ли это из-за HTTPS конфигурации? Есть специальная настройка развязности, которая может быть настроена так, чтобы короткий URL в среде HTTPS? На удаленных серверах появляется следующее сообщение об ошибке, которое появляется четко указывает на ошибку CORS: «Не удается прочитать с сервера.
user9393635
1

голосов
1

ответ
348

Просмотры

Весна + Кураж: Multipart форма

Я вывешивать многослойную форму к приложению Spring загрузки. Например @PostMapping (значение = "/ Foo", потребляет = MediaType.MULTIPART_FORM_DATA_VALUE) общественного недействительными postFooAsMultiPart (@RequestBody Foo Foo) {...} Spring делает очень хорошую работу сортировочных многосекционный запрос на объект (StandardServletMultipartResolver). Я представляю конечную точку с помощью Swagger (Springfox). Зависимости: io.springfox: springfox-swagger2: 2.8.0 io.springfox: springfox-чванство-УИ: 2.8.0 Тем не менее, это делает все тело как единое поле: HTTP: // локальный: 8080 / v2 / API- Docs ... "параметры": [{ "в": "тело", "имя": "Foo", "описание": "Foo", "требуется": правда, "схема": { "$ реф": "# / определения / Foo"}}], ... Мой вопрос: Можно ли получить Кураж, чтобы сделать каждый из атрибутов Foo в виде отдельных параметров? Примечание: В качестве обходного пути я использовал @ApiImplicitParams, чтобы указать атрибуты всех Foo в на уровне контроллера. Однако я вижу это как более обходной путь, а не правильное решение. Редактировать Я потратил немного времени, следующий код, и я уверен, что это не может быть сделать с текущей версией. Я открыл вопрос на GitHub репо, предлагающие изменения. Я буду обновлять / ответить на этот вопрос в зависимости от результата. Однако я вижу это как более обходной путь, а не правильное решение. Редактировать Я потратил немного времени, следующий код, и я уверен, что это не может быть сделать с текущей версией. Я открыл вопрос на GitHub репо, предлагающие изменения. Я буду обновлять / ответить на этот вопрос в зависимости от результата. Однако я вижу это как более обходной путь, а не правильное решение. Редактировать Я потратил немного времени, следующий код, и я уверен, что это не может быть сделать с текущей версией. Я открыл вопрос на GitHub репо, предлагающие изменения. Я буду обновлять / ответить на этот вопрос в зависимости от результата.
Andy N
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

ответ
54

Просмотры

Как вернуть содержимое файла из контроллера?

Я пытаюсь вернуть содержимое файла образа с помощью приложения Python Connexion сгенерированного из файла спецификации OpenAPI v2 с использованием чванство-CodeGen и настройки языка питон-склянки. В моем модуле контроллера, я просто сделать следующее: Защита file_contents_get (file_id). Файл = app.datastore.get_instance () get_file (file_id) с открытым (file.path, "RB") в качестве е: обратный f.read ( ) Тем не менее, это приводит к следующей ошибке: UnicodeDecodeError: кодек «UTF-8» не может декодировать байт 0xff в позиции 0: недопустимый начальный байт Что такое правильный способ вернуть содержимое файла? Обратите внимание, что я не хочу файл как вложение, а скорее инлайн.
ScoPi
1

голосов
0

ответ
32

Просмотры

Зависимость Разрешение в Swagger Startup

Я пытаюсь решить объект, который реализует интерфейс IMyConfiguration при запуске Swagger. Это можно сделать с помощью следующего фрагмента кода: общественного класса SwaggerConfig {государственной статической силы Register () {вар MyConfig = GlobalConfiguration.Configuration.DependencyResolver.GetService (TypeOf (IMyConfiguration)); GlobalConfiguration.Configuration.EnableSwagger (с => {...}); }} Конечно, вы должны убедиться, что контейнер инициализируется перед Кураж регистрирует себя для этой работы. Я задаюсь вопросом, есть ли возможный способ сделать разрешение зависимостей другим способом, или что я буду жить с этим.
Chrono
1

голосов
0

ответ
52

Просмотры

Asp.net ядро ​​веб-приложений API Сообщение URL

У меня есть Asp.net ядро ​​веб-приложений API с методом пост, который считывает файлы с одного счета для хранения и записи обработанного файла обратно в другое место хранения. Метод пост работает локально и доступен через HTTP: // локальный: 5000 / API / значения, используя почтальона. Когда я развернуть приложение в виде Web App в формат же URL Azure App Service не работает на лазури. Для развертывания я перетащить всю мою архивную папку приложения в https://xxxx.scm.azurewebsites.net/ZipDeploy (ссылка URL: https://docs.microsoft.com/en-us/azure/app-service/app -сервис-Deploy-молния) Я знаю, что веб-приложение Asp.Net шаблон Azure Api App имеет чванство конфигурации в них, которые делают их доступными для других служб после развертывания. Мой вопрос заключается в рассмотрении у меня нет никакого чванства конфигурации в моем.
parmo
1

голосов
3

ответ
828

Просмотры

Как передать параметры запроса в узле Swagger.json расслоения плотного?

Я пытаюсь передать параметры запроса из запроса URL в NodeJS swagger.json. Но я получаю не определено. вот URL reset/[email protected] На чванство "параметры" NodeJS: [{ "Имя": "Параметры", "в": "", "требуется": правда, "типа": " строка», "схема": { "$ исх": "# / определения / ResetPassword"}}],
arpit_writes
1

голосов
1

ответ
165

Просмотры

чванство autorest использования клиента

У меня есть решение, где у меня есть несколько проектов WebAPI они общаются над остальными, так что я хочу использовать autorest и чванство для создания клиентов, autorest работает отлично и создавать клиентские и объектные классы, но на самом деле я не хочу, чтобы использовать их как я уже же объекты в общем проекте, и я могу это сделать, не addind модели в autorest генерируется клиентский проект, но мне нужно внести изменения в apiclient после каждый раз, когда я regenerage клиента, может быть, есть способ использовать эту генерируемый модель классов «частичный», как они имеют такое же имя и пространство имен таким образом компилятор каким-то образом объединить их и использовать как один?
1

голосов
0

ответ
31

Просмотры

Интеграция чванство 1.2 с узлом JS / Угловое интерфейс

У меня есть приложение, которое производит бэкэнд API документы с чванством версии 1.2. Передняя часть моего приложения узел с угловой JS. Пожалуйста, дайте мне знать, как дать ссылку на API Docs (сгенерированную из бэкэнд приложения) из узла JS. Большинство НПХ модулей, я пытался поддерживал только чванство 2.0, а не 1.2
Anandh
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

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