Dart RPC和对象层次结构

时间:2016-01-05 22:32:18

标签: rest dart google-cloud-datastore app-engine-ndb dart-rpc

这可能是关于REST API的一个非常基本的问题。我刚刚开始阅读documentation并且没有看到如何为具有子对象的对象/模型实现API。相反,只有对象的描述只有基元(int,string等)。

是否有对象层次结构的示例?或者也许服务器模型只使用类定义中的ID来引用子对象,比如Google的NDB是如何做到的?

2 个答案:

答案 0 :(得分:2)

来自docs:

  

当前支持的公共字段类型是int,double,bool,   String,DateTime,List,Map和另一个消息类。

这意味着您可以创建所需的结构,唯一的要求是其中的所有对象必须以特定方式构造。

一个例子:

class Person {
  String name;
  int age
}

class Address {
  String city;
  String street;
}

class School {
  List<Person> staff;
  Person headmaster;
  List<Person> students;
  Address address;
}

我不太喜欢的一个限制是你不能在这些类中使用继承,但是rpc包的重点是创建一个可供任何客户端使用的API,而不仅仅是dart代码。

答案 1 :(得分:1)

如果你查看messages used for testing包中有使用子消息的例子,例如TestMessage1

有关更多示例,您可以查看dart_services项目,它是dartpad的后端。它有当前的api here和消息定义here。 dart_services不使用直接嵌套消息,而是使用其他消息的嵌套列表。