Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
API URL结构_Api_Rest - Fatal编程技术网

API URL结构

API URL结构,api,rest,Api,Rest,我正在创建一个由API支持的抽奖应用程序。层次结构相当简单 客户 使用者 抽奖 意见书 客户端可以有本质上是任何抽奖的管理员的用户。客户还可以进行多次抽奖。一次抽奖可以有多个提交。好吧,不复杂 我感到困惑的是,URL结构的正确方法是什么。我已经在互联网上阅读了文档和最佳实践博客,但我仍然感到困惑。以下是我们目前的路线: 客户 发布/clients 获取/clients 获取/clients/:client\u id PUT/clients:client\u id 用户 发布/users 获取/u

我正在创建一个由API支持的抽奖应用程序。层次结构相当简单

  • 客户
  • 使用者
  • 抽奖
  • 意见书
  • 客户端可以有本质上是任何抽奖的管理员的用户。客户还可以进行多次抽奖。一次抽奖可以有多个提交。好吧,不复杂

    我感到困惑的是,URL结构的正确方法是什么。我已经在互联网上阅读了文档和最佳实践博客,但我仍然感到困惑。以下是我们目前的路线:

    客户

    发布/clients
    获取/clients
    获取/clients/:client\u id
    PUT/clients:client\u id

    用户

    发布/users
    获取/users
    获取/users/:user\u id
    PUT/users/:user\u id
    删除/users/:user\u id

    抽奖

    发布/抽奖
    获得/抽奖
    获取/sweepings/:抽奖\u id
    PUT/sweepings/:sweepings\u id
    删除/sweepings/:sweepings\u id

    提交内容

    发布/submissions
    获取/submissions
    获取/submissions/:submission\u id
    PUT/submissions/:submission\u id
    删除/submissions/:submission\u id

    如您所见,我遵循的是每个资源2个URL的简单方法——我觉得这是最佳实践。然后,您可以在任何GET请求上通过查询参数钻取关联(例如,/submissions?sweepings\u id={sweepings\u id}/sweepings?client\u id={client\u id}等)

    这对我来说当然是有道理的,但是我的同事和我发生了争执,因为他正在使用主干构建主要的前端应用程序。主干网声明它们支持RESTful API的即时使用,但我的同事告诉我主干网更喜欢表示层次结构的URL结构。当然,我认为这将导致一个混乱、冗长、整体混乱的URL结构。理想情况下,我的同事希望看到以下URL结构:

    获取/clients
    获取客户/用户
    获取客户/抽奖
    获取客户/抽奖/提交

    注意:上述路线还将通过URL中的附加资源id(例如,/clients/users/:user\u id/clients/sweepings/:sweepings\u id/submissions等)具有附加路线来补充单个资源


    我知道这是一个有点敏感的话题,但我很想听到一些反馈。我投票支持每个资源一个2个URL,如果需要建立任何关联,可以通过使用GET或POST参数来实现。但我可能完全错了。

    我在中找不到任何东西表明分级URI是首选的,但我可能遗漏了一些东西。我对主干网一无所知,但如果它需要这种结构,我想你必须这样做,但似乎没有任何理由说明在这种结构之外它会更好。然而,每个资源通常都有一个唯一的URI,而层次结构的URI似乎有多个URI。我知道你不能代表你的同事说话,但他是否提供了任何具体的理由来说明为什么他的方案会有更好的功能?

    你是对的,这是一个有争议的话题。话虽如此,我发现在尝试充实api标准/定义时,at的帮派非常有帮助。他们不会说有一种方法是正确的,他们更倾向于根据行业经验提出经过教育的建议

    他们提供了一些很好的资源和内容,可以帮助你找到一个位置,在那里你可以与你身边的其他人一起捍卫你的观点

    看看这个。。。这是相当基本的东西,但对于api设计来说,这是一个很好的复习

    注意:我与Apigee没有任何联系,我只是认为他们在为api设计定义标准方面做了一些伟大的工作


    ~祝你好运,我希望这对你有所帮助

    这不是一个好问题。就像你说的,这是一个敏感的话题。没有正确/错误的答案。@Marc B我只是在征求反馈/建议。这篇文章是在几周后(2011年11月而不是2011年9月)发表的,但它是同一网络研讨会的“第二版”。我也没有看过,所以我还不能说有经验