03-数据需求
5.1.1 数据需求
我们将开始使用一些浏览器HTTP库来向伪API服务器发送数据。你可能已经对这些东西的工作方式有一点点了解,并且了解如何使用JavaScript调用REST风格以及其他类型的Web API,因此我不会深入介绍这一点。如果你没有任何浏览器HTTP或服务器通信的经验,有许多优秀的资源可以参考,如Nicolas G. Bevacqua 的JavaScript Application Design。
当使用API时,发送的数据通常需要符合某种契约。如果数据库期望存储用户信息,发送的数据会被要求包含姓名、邮箱或者个人相片等信息。数据通常必须具有特定的格式,否则服务器将会拒收。因此,当前的首要任务就是要弄清楚服务器需要怎样的数据格式。
代码清单5-1展示了Letters Social中帖子的基本数据结构。我们在这里使用了一个简单的JavaScript类,因为服务器实际上也是这么做的。当用户发帖时,向服务器发送的数据需要包含此模型中定义的大部分字段。注意,帖子可以包含很多有用的属性,如位置信息——第6章将创建添加位置的功能。服务器会给没有指定的属性赋默认值,但会忽略未定义的其他属性。浏览器中无须做的事情是创建唯一的ID——服务器会做这部分工作。
代码清单5-1 帖子的数据结构(db/models.js)
export class Post {
constructor(config) {
this.id = config.id || uuid();
this.comments = config.comments || [];
this.content = config.content || null;
this.date = config.date || new Date().getTime();
this.image = config.image || null;
this.likes = config.likes || [];
this.link = config.link || null;
this.location = config.location || null;
this.userId = config.userId;
}
}