📜 Что такое чванство
Swagger
ЯвляетсяAPI
Создание инструментов, которые могут генерировать документацию.Swagger
написаноyaml
а такжеjson
для достижения документации. И может сделать тестирование и так далее.
пройти черезswagger
Интерфейсные документы легко генерируются, что удобно для внешнего просмотра и тестирования.
🔧 Установить чванство
Интегрируйте в наш проектswagger
, интерфейсная документация проекта в дальнейшем может быть сгенерирована автоматически
Перед установкой рекомендуется открыть go mod и использовать goproxy для скачивания
Сначала вам нужно установить swagger
go get -u github.com/swaggo/swag/cmd/swag
Убедитесь, что установка прошла успешно
$ swag -v
swag version v1.6.7
🍔 Интеграция чванства
Установить джин-чванство
$ go get -u github.com/swaggo/gin-swagger
$ go get -u github.com/swaggo/gin-swagger/swaggerFiles
настройка маршрутизации джина
существует
swagger
адрес доступа для добавленияurl := ginSwagger.URL("http://localhost:8080/swagger/doc.json")
router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler, url))
вurl
Определенныйswagger
изdoc.json
путь, мы можем напрямую получить доступ кjson
смотреть.
Конфигурация документа
Следующим шагом является улучшение документации:
существуетmain.go
серединаmain
Добавьте комментарий к методу.
package main
import (
_ "GinHello/docs" //此处导入的是swag init 生成docs文件所在路径
"GinHello/initRouter" //导入路由
)
// @title Gin swagger
// @version 1.0
// @description Gin swagger 示例项目
// @contact.name ganlei
// @contact.url https://juejin.cn/user/1943592291283309
// @contact.email ganlei@uniontech.com
// @license.name Apache 2.0
// @license.url http://www.apache.org/licenses/LICENSE-2.0.html
// @host localhost:9090
func main() {
// 省略其他代码
}
Приведенные выше комментарии в основном хорошо понятны и не слишком много объясняют.
Это основные вводные аннотации проекта, а затем аннотации методов нашего интерфейса.
в нашемhandler
добавить примечание
Swagger
Вам необходимо написать соответствующие комментарии или аннотации к методу, а затем использовать генератор для автоматической генерации файла описания.
gin-swagger
Дан пример:
// @Summary Add a new pet to the store
// @Description get string by ID
// @Accept json
// @Produce json
// @Param some_id path int true "Some ID"
// @Success 200 {string} string "ok"
// @Failure 400 {object} web.APIError "We need ID!!"
// @Failure 404 {object} web.APIError "Can not find ID"
// @Router /testapi/get-string-by-int/{some_id} [get]
мы можем обратиться кSwagger
Спецификации аннотаций и примеры для написания
Ссылочные примечания см.официальная документация.чтобы убедиться, что вы получаете последний синтаксис swag
Места, которые не описаны в документе, объясняются здесь, оParam
Типы параметров следующие
- запрос похож
\user?username=Jack&age=18
- тело должно поместить данные в тело для запроса
- путь похож
\user\1
Разные типы параметров соответствуют разным запросам, пожалуйста, используйте их соответствующим образом.
/user/:name
Интерфейс , конечное имя передается через{}
пакет.как правило@Успех,@FailureВозвращенный результат может быть упакован в модель структуры. Результат
package model
type Result struct {
Result bool `json:"result" example:"请求结果true或者false"`
Code int `json:"code" example:"000"`
Data interface{} `json:"data" `
}
Result
серединаtag
там будетexample
, это ещеswagger
тег, чтобы дать структуре пример.Генерировать файлы, соответствующие чванству
Когда мы закончим со всеми комментариями кода, повторно выполните в консолиswag init
, который будет создан на основе наших аннотацийdocs.go
и соответствующие файлы json и yaml.
Примечаниеswag init
Необходимы инструкции в проектеКорневая директорияВыполните ниже, чтобы swag мог сканировать аннотации swagger во всем проекте.
По команде:
swag init -h
Вы можете проверить соответствующую справку, если функция main.go не находится в корневом каталоге проекта, вы можете использовать следующую команду:
swag init -g ./../main.go - o ./docs
Здесь используется относительный путь относительно расположения корневого каталога вашего проекта main.go.
Дополнительные инструкции
Комментарий выше main в файле main.go имеет @BasePath, обычно при использовании разрешения доменного имени доступ к API-интерфейсу осуществляется в этой форме /api/v1
Если вы столкнулись с междоменными проблемами, вы можетеRouter
плюс функция обработчика
//Cors ...允许跨域设置func Cors() gin.HandlerFunc { return func(c *gin.Context) { c.Header("Access-Control-Allow-Origin", "*") c.Header("Access-Control-Allow-Credentials", "false") c.Next() }}
проверять
Чтобы начать наш проект, посетитеhppt://localhost:9090/swagger/index.html
Вы можете просмотреть нашу документацию, эффект выглядит следующим образом
✍Резюме
Изучая эту главу, мы объединяем наш проект и документацию, так или иначе, нам нужно написать комментарии, теперь мы можем убить двух зайцев одним выстрелом, то есть завершить комментарии к коду и завершить документацию проекта.