API设计:需要URL帮助

时间:2015-08-01 14:05:48

标签: mongodb api

我正在设计一个新网站。在我开始编码之前,我学习了很多关于api和nosql数据库的知识(因为我习惯使用sql但我想尝试使用mongoDB)。

在mongoDB中,我会有一个用户'这样的文件:

{
   firstname: 'xxxxxxx',
   lastname:  'xxxxxxx',
   projects: [
      {
         name: 'project xxxxxxx',
         participants: [], // array of friends into this project
         operations: [
            { title: 'Title OP xxxxxxx', contributors: [] },
            { title: 'Title OP xxxxxxx', contributors: [] },
            { title: 'Title OP xxxxxxx', contributors: [] }
         ]
      }
   ]
}

我想知道两件事:

  1. projects.participantsprojects.operations.contributors应该引用其他用户吗?
  2. 对于API,我应该这样做:
    GET /users/:id_user
    GET /users/:id_user/projects/:id_project
    GET /users/:id_user/projects/:id_project/operations/:id_operation

    (我的API应始终以users开头吗?)
  3. 如果您有更好的解决方案,我会很高兴知道。

    由于

    编辑1:我将使用Express在NodeJS上工作,我希望有一个REST API。

3 个答案:

答案 0 :(得分:1)

  1. 是的, projects.participants projects.operations.contributors 可以引用同一个集合中的其他文档。其中每个都应引用同一集合中的有效 _id

  2. 您能否详细说明您是如何创建API的?我的意思是你使用哪个框架作为访问mongoDB的包装器?可能那时我可以尝试提供更多帮助。

答案 1 :(得分:0)

好的很棒!!! 因此,用户是您的收藏品名称。绝对没有必要使用用户启动您的API名称。在node.js中,您可以创建一个路由器,它将您的请求路由到特定的js文件,您可以将它命名为您想要的任何名称。例如:

用例:您希望公开3 API 1.访问所有用户。 (使用url暴露 - / getallusers) 2.访问项目的所有参与者。(使用url公开 - / getparticipantsbyproject) 3.访问操作中的所有贡献者。(使用url - / getcontributorsbyproject公开)。

您可以在名为 myapi 的文件中编写所有这些API并公开它们。

现在,您可以使用以下网址从浏览器调用这些API:

  1. http://host:port/myapi/getallusers

  2. http://host:port/myapi/getparticipantsbyproject

  3. http://host:port/myapi/getcontributorsbyproject

答案 2 :(得分:0)

仅限RESTful API。我提到了上面的3个URL,它们只是暴露不同功能的RESTful API。