Kirill 🥷🏻
Вот такую команду пытаюсь выполнить
Alexander
ещё один gin?
а я не понимаю зачем, если есть fasthttp
Alexander
который допустим тому же nginx не сильно проигрывает. а если уж мы так любим делать мало бизнес логики на один запрос, как несколькими днями ранее мне дали понять
Борис
ну просто тут готовая обёртка, наверное в этом удобство, nginx надо настраивать и следить за ним, как верхний шлюз он отлично справляется, да и как основной хз кроче
Alexander
бл
Alexander
я говорю fasthttp как http сервер настолько хорош, что не проигрывает nginx
Alexander
стандартный гошный дает больше нагрузки ощутимо
Борис
тогда я не понял, что прочитал
Борис
ну в целом я согласен
Tony
https://github.com/swaggo/swag
Запустит отдельный роутер для swagger, вроде что-то заработало, но: Добавил перед main функцией в файле main.go // @title Swagger Example API // @version 1.0 // @description This is a sample server Petstore server. // @termsOfService http://swagger.io/terms/ // @contact.name API Support // @contact.url http://www.swagger.io/support // @contact.email support@swagger.io // @license.name Apache 2.0 // @license.url http://www.apache.org/licenses/LICENSE-2.0.html // @host petstore.swagger.io // @BasePath /v2 func main() { ... }
Tony
При переходе по ссылке появилось
Tony
Создал ф-цию в main.go для проверки аннотации. Перед функцией указал аннотации // swaggerRouterStart godoc // @Summary Retrieves user based on given ID // @Produce json // @Param id path integer true "User ID" // @Success 200 // @Router /users/{id} [get]
Tony
Выполнил swag init ещё раз, но аннотации не появляются в доке Не могу понять почему и как скормить другие или все файлы проекта, а не только main.go ? У меня конечные точки разбросаны по файлам сущностей и в каждом регистрируются точки именно этой сущности
Tony
Роутер для свагера страртует так: func swaggerRouterStart() { //Стартует отдельный роутер для swagerа r := chi.NewRouter() r.Get("/swagger/*", httpSwagger.Handler( httpSwagger.URL("http://localhost:1323/swagger/doc.json"), )) http.ListenAndServe(":1323", r) }
Tony
да, нужно прочитать все
Так у меня даже из main.go аннотация функции не появилась в документации свагера. Видимо еще как-то надо сообщить свагеру, но как я понял, он сам анализирует файл go и ищет свои аннотации
Tony
А для обработки остальных файлов, как я понял, необходимо запускать swag init <файл> или как-то указать лист всех файлов
Tony
.
Илья
а swag init ошибок не выдает?
Tony
Т.е. в main.go у меня кроме описания свагера (которое появляется в браузере) еще есть функция // swaggerRouterStart godoc // @Summary Retrieves user based on given ID // @Produce json // @Param id path integer true "User ID" // @Success 200 // @Router /users/{id} [get] func swaggerRouterStart() { //Стартует отдельный роутер для swagerа т.к. к роутеру жулиана прикрутить не удалось r := chi.NewRouter() r.Get("/swagger/*", httpSwagger.Handler( httpSwagger.URL("http://localhost:1323/swagger/doc.json"), //The url pointing to API definition )) http.ListenAndServe(":1323", r) } Это , конечно, не конечная точка, но аннотация же есть
Tony
а swag init ошибок не выдает?
если выполнять в папке с main.go, то без ошибок и папку doc генерит
Илья
папка doc пустая?
Tony
main.go в папке cmd, в ней и swag init приходится делать
Tony
там есть эти записи?
В файлах папки docs нет записей о моей функции
Tony
Хотя нет, данные есть
Tony
{ "swagger": "2.0", "info": { "description": "This is a sample server Petstore server.", "title": "Swagger Example API", "termsOfService": "http://swagger.io/terms/", "contact": { "name": "API Support", "url": "http://www.swagger.io/support", "email": "support@swagger.io" }, "license": { "name": "Apache 2.0", "url": "http://www.apache.org/licenses/LICENSE-2.0.html" }, "version": "1.0" }, "host": "petstore.swagger.io", "basePath": "/v2", "paths": { "/users/{id}": { "get": { "produces": [ "application/json" ], "summary": "Retrieves user based on given ID", "parameters": [ { "type": "integer", "description": "User ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "" } } } } } }
Илья
значит с Handler проблема
Tony
блин, сделаю в пустом проекте, чтобы разобраться в этой бяке :)
Tony
скинь логи выполнения
2022/06/21 8:11:01 Generate swagger docs.... 2022/06/21 8:11:01 Generate general API Info, search dir:./ 2022/06/21 8:11:02 create docs.go at docs/docs.go 2022/06/21 8:11:02 create swagger.json at docs/swagger.json 2022/06/21 8:11:02 create swagger.yaml at docs/swagger.yaml Вроде, всё хорошо, но...
Tony
Что-то нифига...
Tony
Сделал в пустом проекте
Tony
https://pastebin.com/ds6vVWa0
Tony
На выходе тоже самое
Tony
Может что-то ещё кроме swag init надо выполнить?
Илья
Какой самый быстрый совместимый с net/http роутер ?
Grigory
Он же не совместим с net/http
Grigory
Где нибудь должны быть бенчи
Tony
🥺 heeeeeeeelp swagger не поддаётся :) Мож у кого есть рабочий пример проекта? Ну или накидать может кто сможет на досуге пустышку, но с рабочим свагером
Tony
Джулиан Шмидт вроде
Кстати, работает отлично
Tony
https://www.youtube.com/watch?v=DBZgt9iIWzk
Спасибо, попробую хотя бы с gin-ом
Илья
Где нибудь должны быть бенчи
https://github.com/julienschmidt/go-http-routing-benchmark
John
Спасибо, попробую хотя бы с gin-ом
Я делал с echo, добавил эндпоинт для свагера, собирает 10+ урлов
John
Доберусь до ноута скину команду
John
Я делал с echo, добавил эндпоинт для свагера, собирает 10+ урлов
swag init --generatedTime=true -g=./cmd/api/main.go --outputTypes=yaml,go -o=api
Null
Что Go грядущий нам готовит? Разбираем долгожданный релиз 1.19 https://habr.com/ru/company/ozontech/blog/674190/ @Golang_google
Не ну это
последний
здравствуйте, я учу go с двумя друзьями.
Не ну это
Звучит как завязка для гей прона
Булат
здравствуйте, я учу go с двумя друзьями.
Всем привет, это вот я его друг)0))0
Илья
Всем привет, это вот я его друг)0))0
один голубой, а второй не против?
Булат
пока еще не определились
Emin Zalaev
Булат
У нас еще лесбиянка есть, сейчас тоже зайдет
Илья
Трио
Настя
У нас еще лесбиянка есть, сейчас тоже зайдет
Всем привет, вообще то это мои мальчики
Emin Zalaev
вайтишники общий сбор
Patamen
Булат
Илья
не флудим, админ в онлайне
Patamen
Pull Request № 42069 Add Premium Telegram Reactions to Chat -Clown -Whale -Hotdog -etc
Настя
Ron Mount
ладно
Emin Zalaev
Все понятно челам дали домашку
Emin Zalaev
Учить голэнг
Илья
что за алгоритмы на доске?
Emin Zalaev
Emin Zalaev
Как надо прогать
Булат
тоже верно
Ron Mount
да
Alexander
На лаптопе играть... Да еще и в дотан...
Вильям
Как надо прогать
Смотрю, ты тут забавляется сидишь, в наших чатах уже нет активности))
Ron Mount
пудш хокай