我应该如何使用RESTAPI和Zend框架表示多对多类和教授之间的关系?

我应该如何使用RESTAPI和Zend框架表示多对多类和教授之间的关系?,rest,zend-framework,resources,assign,Rest,Zend Framework,Resources,Assign,我正在使用Zend Framework 1.12.3开发RESTAPI 我有三种不同的资源:班级、学科和教授。每个班级可能分配了多个科目,每个科目可能分配了一名或多名教授 模式应该是这样的: classes: class: id: 123 name: foo subjects: subject: id: 14 name: Chemistry

我正在使用Zend Framework 1.12.3开发RESTAPI

我有三种不同的资源:班级、学科和教授。每个班级可能分配了多个科目,每个科目可能分配了一名或多名教授

模式应该是这样的:

classes:
    class:
        id: 123
        name: foo
        subjects:
            subject:
                id: 14
                name: Chemistry
                professors:
                    professor:
                        id: 741
                        name: Jeremy Clarkson
                    professor:
                        id: 963
                        name: Richard Hammond
            subject:
                id: 16
                name: Physics
                professors:
                    professor:
                        id: 753
                        name: James May
我想知道哪种方法是列出所有科目和教授的最佳方法,包括指定科目和未指定科目(在实际指定的页面上)

我应该只返回指定的科目和教授,然后将这些id交叉引用到包含所有科目和教授的数组中吗

或者我应该返回一个包含所有主题和教授的数组,每个主题和教授的“赋值”变量设置为0或1


在其他API中,我已经看到使用第一种方法处理分配给特定项目的用户(API只返回分配用户的ID,然后客户端应用程序使用包含所有用户的数组交叉引用这些ID)。这是关于作业的最佳实践吗?

我建议使用前一种方法,因为与后一种方法相比,显示学科/教授简明列表所需的数据集非常小。如果您还没有这样做,我建议使用JSON作为数据格式。这使得从客户端JS调用此方法并创建有趣的表示非常容易


根据学科/教授层次结构的初始列表,很容易按照您的建议将id与另一个调用的完整集合进行匹配,或者对集合中的每个教授id进行调用,并获取有关该个人的详细信息。如果您是通过AJAX执行这些操作的,您甚至可以并行运行它们:

如果restapi只为关系创建资源是没有意义的。 这里的一门学科,教授一门课就是一种资源

一个科目可以指定一个或多个教授,但不需要包含其他教授的信息。从教授的角度来看,它应该只包含分配给它的科目的信息

发送列表、教授和科目(或包含科目列表的班级列表)。让你们在模式样本中以教授的方式引用他们的主题。同样的道理,教授们也可以为他们指定课程的参考资料

用于作业页面。考虑列表中的一个为主(较小的一个是一个好主意),并用它来交叉引用另一个。
如果你想知道某位教授的信息,可以这样做。教授列表中的一个元素/文档/模型可以为您提供所有您需要的内容,反之亦然。

我认为您应该在尝试创建服务之前了解对象模型。也许这是一种文化因素(我是荷兰人),但似乎模型中缺少了某种花名册对象,这将是编写服务的资源。

两位化学老师都在给foo班教授化学吗?