【Go】Echo JsonにTemplateから生成したHTMLを埋め込んで返す
今回やりたかったことは以下。
・HTMLのテンプレートを変数等に定義しておく。
・テンプレートを元に動的な部分をHTMLに埋め込む。
・生成したHTMLをJSONにいれてレスポンスとして返す。
package main
import(
"net/http"
"github.com/labstack/echo"
)
// ViewData
type ViewData struct {
Title string `json:"id"`
Contents string `json:"html"`
}
// レスポンスを表す構造体を定義
type JsonFormat struct {
Id int `json:"id"`
Html string `json:"name"`
}
func main() {
e := echo.New()
e.GET("/", func(c echo.Context) error {
var buffer bytes.Buffer
var html = "<div><h1>{{.Title}}</h1><p>{{.Contents}}</p></div>"
var t = template.Must(template.New("html").Parse(html))
if err := t.Execute(&buffer, data); err != nil {
return echo.NewHTTPError(http.StatusInternalServerError, "Server Error")
} else {
return c.JSON(http.StatusOK, Advertise {
Id: 1,
Html: buffer.String(),
})
}
})
}以上です