以通用方式实现REST响应一般吗?

时间:2017-09-15 02:01:18

标签: object go struct interface

我想做的是:

1.从端点中的url参数解析模型。(例如:媒体,帐户)
mysite.com/v1/rest/:model< - :model可以是' media',' account'。
所以它看起来像:

mysite.com/v1/rest/media
mysite.com/v1/rest/account

2.使用1,检索字符串并将其用于获取相应的结构。

3.将其置于接口{}

的方法中 我的代码如下:

type Media struct {
    Caption string
}

type Account struct {
    Bio string
}

type AdminController struct {
    TableName      string
    ID             int64
}

func (c *AdminController) Get(n *core.Network) {
    // I want to put struct to below GetModels method dynamically.
    // Not explicitly like this.
    total, data, err := c.GetModels(&Media{}, n)

    // I want to do this
    total, data, err := c.GetModels(caster("media"), n)

    if err != nil {
        n.Res.Error(err)
    } else {
        n.Res.Success(total, data)
    }
}


是否可以实现获取字符串并返回相应结构的方法?像这样:

func (c *AdminController) caster(model string) interface{} {
    if string == "media" {
        return &Media{}
    } else if string == "account" {
        return &Account{}
    }
    return nil
}


如果可能,这是处理REST请求的一种好方法(通用方式)还是应该按表格逐个实施响应方法?

如果我必须实现REST(4)* number_of_tables方法,它似乎并不高效。任何关于这个架构问题的建议都将受到赞赏。

0 个答案:

没有答案