2

我在 AngularJS 中有一个原型解决方案,它使用以下数据结构:

$scope.clients = [
    { client:"Client1", projects:[ 
        { project: "Project1", items:[
            { item: "This is the first item" },
            { item: "This is the second item" }
        ]},
        { project: "Project2", items:[
            { item: "This is the third item" },
            { item: "This is the fourth item" }
        ]}
    ]},
    { client:"Client2", projects:[ 
        { project: "Project4", items:[
            { item: "This is the fifth item" },
            { item: "This is the sixth item" }
        ]}
    ]}
];

我正在寻找实现后端,但我不确定 API 是否应该为客户端提供上述嵌套数据结构,或者是否应该为项目提供平面结构,然后 AngularJS 客户端应用程序创建嵌套结构。以下是 API 将提供的平面结构示例:

[
    { client: "Client 1", project: "Project 1", item: "This is the first item." },
    { client: "Client 1", project: "Project 1", item: "This is the second item.", },
    { client: "Client 1", project: "Project 2", item: "This is the third item.", },
    { client: "Client 2", project: "Project 4", item: "This is the fourth item.", }
];

最好的方法是什么?另外,对于 API 设计有什么好的参考吗?

4

2 回答 2

2

如果您使用 JSON,那么“application/hal+json”标准绝对值得一看。

您可以在此处阅读所有详细信息:https ://datatracker.ietf.org/doc/html/draft-kelly-json-hal-05

Matthew Weier O'Phinney 也做了一个很好的演示,其中包含有关如何将其与 PHP 后端一起使用的示例代码:http ://www.zend.com/en/resources/webinars/ (向下滚动到“构建 RESTful ZF2 应用程序”网络研讨会)。

基本上,它是一组允许在您的响应中链接和嵌入数据的约定,这正是您在这里所需要的。

希望有帮助!

于 2013-06-19T19:00:48.840 回答
1

我通常发现在我的应用程序中不将我的 API 响应翻译成不同的格式是有帮助的。如果嵌套结构在您的页面上有用,并且在其他地方也将继续有用,我会坚持使用它。您不希望在使用它的每个页面上都将 API 响应从一种格式转换为另一种格式,因此请选择具有凝聚力且易于理解的内容。

IMO,嵌套结构看起来更好,因为您不必在前端进行分组和关联。如果可能的话,我倾向于更喜欢我的 API 响应需要很少的“按摩”来在我的页面上下文中工作。

就 API 设计而言,如果您正在寻找一些标准,这个问题的答案对标准 API 设计和响应格式有一些很好的参考。

于 2013-06-19T19:01:25.560 回答