带有echo框架的golang API

gem*_*pir 3 api json go go-echo

我正在使用名为echo(https://github.com/labstack/echo)的轻型框架Web框架,我正在尝试使用它构建一个非常简单的API.

这是我的一条路线

 e.Get("/v1/:channel/:username", getData)
Run Code Online (Sandbox Code Playgroud)

这是getData函数,它从mysql数据库中执行一个非常简单的SELECT

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)
}
Run Code Online (Sandbox Code Playgroud)

我还有返回值的这个基本结构

type Quote struct {
    username string
    message  string
}
Run Code Online (Sandbox Code Playgroud)

可悲的是,我现在无法弄清楚如何返回JSON.当我尝试这个代码时,来自服务器的响应总是只是{} 我尝试返回c.String工作正常并输出响应但我想返回一个JSON.

我按照这个例子,并没有真正看到这里的问题. https://github.com/labstack/echox/blob/master/recipe/crud/main.go

知道我做错了什么吗?

Chr*_*tts 10

您的结构没有可导出的值,因为名称是小写的.

type Quote struct {
    Username string `json:"username"`
    Password string `json:"password"`
}
Run Code Online (Sandbox Code Playgroud)

您还可以在代码片段中发布已注释的编组密钥的名称,因此如果您想将名称从内部更改为外部表示,则可以.

  • 您可以使用任何 `map[string]interface{}` 来封送至 JSON。例如。`t := map[string]interface{}{"field1: "value1",}` `str, err := json.Marshal(t)` `fmt.Println(string(str))` @Homan (2认同)