web2py可以通过parse_as_rest提供多对五表的REST数据吗?

时间:2012-08-16 16:32:05

标签: rest many-to-many web2py

我需要提供有关多对多关系的REST数据。我一直在使用web2py可爱的parse_as_rest功能,但不能完全解决多对多的问题。

例如,让我们采用标准用户和群组。

表:

  1. 用户
    • ID
    • USER_NAME
    • ID
    • 组名
  2. 成员
    • ID
    • USER_ID
    • GROUP_ID
  3. 我需要使用什么模式来提供一个能够为我提供用户所属的所有group_name的网址?

    patterns = [
    "/user[user]",
    "/user[user]/id/{user.id}",
    "/user[user]/id/{user.id}/membership[membership.user_id]",
    
    # This is the line that I can't make yet:
    #"/user[user]/id/{user.id}/membership[membership.user_id]/group<WHAT GOES HERE>",
    
    "/group[group]",
    "/group[group]/id/{group.id}",
    ]
    parser = db.parse_as_rest(patterns, args, vars)
    

    使用上面的非注释行,我可以访问这些网址:

    1. ... /用户
    2. ... /用户/ ID / 1
    3. ... /用户/ ID / 1 /成员
    4. ... /组
    5. ... /组/ ID / 3
    6. URL#3向我显示了我的所有成员资格,然后我可以对URL#5进行多次单独调用以获取group_name值,但是必须有一种方法可以通过一次调用来完成此操作。

      帮我StackOverflow!你是我唯一的希望。

      编辑:修复了不良切割和粘贴。

1 个答案:

答案 0 :(得分:0)

这个问题是谷歌搜索该主题的首要问题。

只需从多对多表开始构建查询。

/user[membership]/id/{membership.user_id}/groups[group.id]

此请求您并不需要'user'表。

然后请求“/ user / id / 22 / groups”将为您提供所有组,不仅仅是他们的ID。