xml - 如何使用马提尼在 golang 中动态呈现为 HTML/JSON/XML?

标签 xml json rest go martini

我正在尝试在 golang 站点中建立一个简单的 REST API 服务器,该服务器提供与客户端请求相同日期的 HTML、JSON 或 XML 格式。我无法弄清楚。我希望我没有做傻事。

代码:

package main

import (
    "github.com/go-martini/martini"
    "github.com/martini-contrib/render"
)

type Ticket struct {
    Number      int    `json:"number"`
    Description string `json:"description"`
    State       string `json:"state"`
}

func dummyStatus() Ticket {

    ticket := Ticket{
        Number:      2345,
        Description: "A dummy customer ticket",
        State:       "resolved",
    }
    return ticket
}

// http://localhost:3000/status/id:1
func ReadStatus(r render.Render, params martini.Params) Ticket {

    // read from DB
    return dummyStatus()
}

func WriteStatus(params martini.Params) Ticket {

    // write to DB
    return dummyStatus()
}

func main() {

    m := martini.Classic()
    m.Use(render.Renderer())

    m.Group("/status", func(r martini.Router) {
        r.Get("/:id", ReadStatus)
        r.Post("/:id", WriteStatus)
    })

    m.Run()

}

结果: 我请求 JSON,我只收到一个字符串

$ curl -i -H "Accept: application/json" -H "Content-Type:application/json" -X GET http://localhost:3000/status/id:12345
HTTP/1.1 200 OK
Date: Wed, 24 Dec 2014 20:01:32 GMT
Content-Length: 19
Content-Type: text/plain; charset=utf-8

<main.Ticket Value>

最佳答案

经过反复试验,我弄明白了这一点,但是,我仍在努力让它与路由组一起工作。如果我弄清楚了,我会更新这个答案。希望这会有所帮助。

package main

import (
    "github.com/go-martini/martini"
    "github.com/martini-contrib/render"
)

type Ticket struct {
    Number      int    `json:"number"`
    Description string `json:"description"`
    State       string `json:"state"`
}

func ReadStatus(p martini.Params) Ticket {

    ticket := Ticket{
        Number:      645,
        Description: "A dummy customer ticket " + p["id"],
        State:       "resolved",
    }
    return ticket
}

func main() {

    m := martini.Classic()
    m.Use(render.Renderer())

    m.Get("/status/:id", func(r render.Render, params martini.Params) { r.JSON(200, ReadStatus(params)) })

    m.Run()

}

关于xml - 如何使用马提尼在 golang 中动态呈现为 HTML/JSON/XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27641821/

相关文章:

c# - 无法在 ASP.Net 和 C# 中使用 LINQ 解析 XML

java - Jaxb:如何为 XSD 元素指定默认类

c# - 检查 JValue 是否为空

php - 从android中的mysql数据库中检索edittext中的数据

休息而不放

java - 在 REST API 中创建 "fake"id

php - 将 XML 文件元素转换为 PHP 数组

json - 我怎样才能在shell脚本中curl请求带有 header 的请求

angularjs - 在网页中提供 REST-API 数据而不暴露 API 端点

java - Android 像 Iphone Part1 一样设置启动画面(Activity)