golang API с эхо-фреймворком
Я использую облегченный веб-фреймворк с именем echo ( https://github.com/labstack/echo) и пытаюсь создать с его помощью очень простой API.
это один из моих маршрутов
e.Get("/v1/:channel/:username", getData)
это функция getData, она делает очень простой SELECT из базы данных MySQL
func getData(c echo.Context) error {
quote := new(Quote)
for rows.Next() {
var username string
var message string
err = rows.Scan(&username, &message)
checkErr(err)
quote.username = username
quote.message = message
}
log.Println(quote)
defer rows.Close()
return c.JSON(http.StatusOK, quote)
}
У меня также есть эта базовая структура для возвращаемого значения
type Quote struct {
username string
message string
}
К сожалению, я не могу понять, как вернуть JSON сейчас. Когда я пытаюсь этот код, ответ от сервера всегда просто {}
Я попытался вернуть c.String, который работает нормально и выдает ответ, но я хотел бы вернуть JSON.
Я последовал этому примеру и не вижу здесь проблемы. https://github.com/labstack/echox/blob/master/recipe/crud/main.go
Есть идеи, что я делаю не так?
2 ответа
Ваша структура не имеет экспортируемых значений, так как имена строчные.
type Quote struct {
Username string `json:"username"`
Password string `json:"password"`
}
Вы также можете аннотировать имя маршализованного ключа, как я опубликовал во фрагменте кода, так что если вы хотите изменить имя с внутреннего на внешнее представление, вы можете это сделать.
Попробуйте go-api-boot (https://github.com/SaiNageswarS/go-api-boot)
Сначала это gRpc. Из коробки поддерживает gRpc web. Кроме того, имеет встроенный Mongo DB ODM. Получает структуры golang из Mongo, копирует модели Mongo в прототипы и наоборот. Дополнительно имеет встроенную поддержку аутентификации JWT, запросов журналирования и т. Д.