7.1 安装express
7.2 express中的路由和分层
中间件一开始是被用来描述软件组件,会将两个东西连接起来,如事务逻辑层和数据服务器的连接或者存储服务和应用模块的连接等。
路由基础:app.method(url_pattern, optional_functions, request_handler_function);
Eg. app.post("/forms/update_user_info.json", function(req, res) { ... } );
expresss路由最强大的特性之一就是支持占位符从请求路由中提取指定值,使用冒号(:)来标记。当解析路由的时候,express会将匹配到的占位符值保存到req.params对象中,例如:
app.get("/albums/:album_name.json", function ( req, res ) {
res.end("Requested " + req.params.album_name );
});
更新相册应用路由:
7.3 REST API设计和模块
在设计API之前多花时间思考,有助于理解用户如何使用应用并能帮助组织和重构代码,使其能够精确传达你对产品的深刻理解。
API设计: REST表明可以从服务器上请求一个对象,主要包含CRUD操作,API操作对象所需要的一切,而不论这些对象是相册、照片,评论或者是用户。
一些设计RESTful接口时的原则:
- URL有两种基本类型,绝大多数设计出来的URL会是下面两种的变形:集合和集合中指定的条目
- 集合的名称应当是名词,最好是复数名词,如albums, users。PUT/albums.json --- 包含了新相册所需要的JSON数据。
- 指定集合中某个特定实例,分别使用GET和POST方法获取或更新对象。如GET /albums/italy2012.json --- 请求返回该相册
- 使用DELETE删除某个对象。
- 如果某个集合来自另一个集合。比如,照片和相册相关联,只需继续使用上面的模式即可。GET /albums/italy2012/photo.json
- 如果需要稍微改变获取数据集合的方式,比如分页或过滤,应该通过添加GET请求参数来实现。
- 需要对API版本花,以便将来对API进行较大的版本改动时能向后兼容,我们只需简单地更新版本号即可。因此,需要在API URL中添加/v1/前缀。
- 最后,在所有需要返回JSON数据的URL中添加.json后缀,这样客户端就会知道返回的数据格式。将来,我们也可以添加任何想支持的格式,如.xml等。
/v1/albums.json
/v1/albums/:album_name.json
/pages/:page_name
/templates/:template_name
/content/:filename
我们为什么没有将版本号添加到静态内容的URL上?因为它们不是JSON服务器的接口,而是一些为Web浏览器客户端提供静态内容的帮助函数。用户总是会获取最新版本的静态文件,这样就能获取最新版本API的版本号。
模块:创建handlers的文件夹
7.4 中间件功能