以通用方式实现REST响应是否普遍?

What I want to do is:

1. Parse model from url parameter in endpoint.(ex: media, account)
mysite.com/v1/rest/:model <- :model can be whether 'media', 'account'.
So it will look like:

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

2. Use 1, retrieve string and use it for getting corresponding struct.

3. Put it to the method which takes interface{}

My code looks like:

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)
    }
}


Is it possible to implement method which takes string and return corresponding struct? Like this:

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


If it's possible, is this a good way to deal with REST request (generic way) Or should I implement response methods one by one following table by table?

If I have to implement REST(4) * number_of_tables methods, it doesn't seem to be efficient. Any advice on this architectural problem will be appreciated.