新手问题 API 编写显示问题

bajiudongfeng · 2015年01月28日 · 最后由 bajiudongfeng 回复于 2015年02月06日 · 1947 次阅读

本人现在用 grape,jbuilder 编写 api,现在遇到了一个问题. 如下: 现在有两个数据集合 a 和 b,前台显示是要 4 个 a 的元素,1 个 b 的元素这样的.a 和 b 元素的字段也都不相同. 也就是说返回的 json 数据应该是四个 a 中元素,一个 b 中元素这样的. 求解.....

返回 json

{
a: [1, 2, 3, 4],
b: [1]
}

a: [1,2,3,4],
b: 1

这样的模式是很容易的啊。看一下 ruby-china 源码地 api 是怎么写的就可以了啊。

@suffering 能给个具体的例子吗?

@suffering 没有找到和我的问题类似的呀,谢谢啦。

呃,你说说你的表名与字段名,以及你要返回的 JSON 模式。

就是和你给出的结构一样,json 中的每条数据都是你给出的那个结构,不知道该怎么拼成那样的结构啊。

@suffering 就是和你给出的结构一样,json 中的每条数据都是你给出的那个结构,不知道该怎么拼成那样的结构啊。

这里作两个预设: 第一,你的 api 的 routes, 比如说是 http://yourdomain.com/api/ts/xxx.json 的模式会返回那个 json 格式. 第二,a 是表 ps 的字段,名为 a; b 为表 ms 的字段。 而后你的 grape api 应该是这样写的。

class Ps < Grape::Entity
    expose :id, :fileda
end
class Ms < Grape::Entity
   expose :id, :filedb
end
resources :ts
     get ":xxx" do
         @ps_4 = Ps.all.limit(4).collect(&:a)
         @ms_1 = Ms.first.b
         {
            a: @ps_4,
            b:  [@ms_1]
         }
     end
end

grape 是可以直接返回原生内容的。也即是最后返回的内容,会转换成 json 数据。最后这一行,就和要返回的 json 数据结构一样。

@suffering谢谢您的指导。问题已经解决.再次标示感谢。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号