尝试使用Restivus为嵌套属性创建REST API

时间:2015-08-19 07:14:50

标签: mongodb api rest meteor

所以,我试图展示Restivus API是如何工作的,而Meteor对我的同事们来说很好。 :)

我在http://askar-blog.meteor.com/创建了一个简单的博客应用程序(感谢DiscoverMeteor的书)。 我的回购https://github.com/tenzan/blog

(我正在阅读https://github.com/kahmali/meteor-restivus#restivus

我有三个系列:

  1. users
  2. posts
  3. comments
  4. 因此,post有很多comments。通常,我们曾经将comments作为post内的嵌套文档,但从Meteor的本质来看,这两个属性被分成不同的集合。

    我想实现REST API,以便我可以访问(包括CRUD操作)postscollections

    http://example.com/api/posts - 所有posts

    http://example.com/api/posts/post_id - 具体的post

    http://example.com/api/posts/post_id/comments - 属于给定comments

    的所有post

    http://example.com/api/posts/post_id/comments/comment_id - 属于给定comment

    的特定post

    如果您查看我的回购,您会看到posts.js下有comments.jslib/collections

    据我所知,要启用REST API,我需要posts.js中的以下代码段:

    if (Meteor.isServer) {
    
        // Global API configuration
        var Api = new Restivus({
            useDefaultAuth: true,
            prettyJson: true
        });
    
        // Generates: GET, POST on /api/post and GET, PUT, DELETE on
        // /api/items/:id for the Posts collection
        Api.addCollection(Posts);
    
        // Generates: POST on /api/users and GET, DELETE /api/users/:id for
        // Meteor.users collection
        Api.addCollection(Meteor.users, {
            excludedEndpoints: ['getAll', 'put'],
            routeOptions: {
                authRequired: true
            },
            endpoints: {
                post: {
                    authRequired: false
                },
                delete: {
                    roleRequired: 'admin'
                }
            }
        });
    

    如您所见,我已添加Api.addCollection(Posts);,并且我已确认可以访问所有posts或特定的{。}。

    我的问题:

    1-如何设置API以访问其父comments的{​​{1}}?

    2 - 我是否必须使用以下代码才能访问post?我问,因为我已经能够访问它们,因为我有posts

    Api.addCollection(Posts);

    我道歉,自己弄得很困惑,试图找出制作REST API的正确方法。

    请随意添加我在这方面遗漏的重要内容。

1 个答案:

答案 0 :(得分:0)