网站重构——轻量化的网站架构设计二,使用restify生成RESTful接口
2014-03-16 14:43
288 查看
有趣的是在有了数据之后,我们可以用很快的速度构建出一个app,构建出一个接口。我们要做的就是将系统一部分一部分解耦出来,成为一个又一个的独立部分
restify is a node.js module built specifically to enable you to build correct REST web services. It intentionally borrows heavily from express as that is more or less the de facto API for writing web applications on top of node.js.
npm install restify
运行
需要注意的是代码中的
format一下
{ "content" : "",
"created" : "2014-03-15 09:30:44.145964",
"description" : "有趣的是在有了数据之后,我们可以用很快的速度构建出一个app,构建出一个接口。我们要做的就是将系统一部分一部分解耦出来,成为一个又一个的独立部分",
"id" : 221,
"keywords" : "restify RESTful nodejs refactory",
"publish_date" : "2014-03-15 09:22:33",
"slug" : "restify-sqlite3-nodejs-to-refactory-website",
"title" : "nodejs restify sqlite3网站重构二,生成RESTful接口",
"updated" : "2014-03-16 01:40:34.374479"
}
运行
forever start app.js
最后效果可见:Phodal's
New Homepage
node restify
简单地来说,这是一个用于构建REST服务的工具。restify is a node.js module built specifically to enable you to build correct REST web services. It intentionally borrows heavily from express as that is more or less the de facto API for writing web applications on top of node.js.
安装restify
还是一句命令npm install restify
用restify创建rest接口
引自官网的示例var restify = require('restify'); function respond(req, res, next) { res.send('hello ' + req.params.name); } var server = restify.createServer(); server.get('/hello/:name', respond); server.head('/hello/:name', respond); server.listen(8080, function() { console.log('%s listening at %s', server.name, server.url); });
运行
node app.js我们可以直接打开浏览器查看http://0.0.0.0:8080/hello/z
整合sqlite3
我们需要取出其中的数据,因为暂时找不到合理的办法,每次查询都需要打开数据库。(转载保留:网站重构)var restify = require('restify'); var sqlite3 = require('sqlite3').verbose(); var db = new sqlite3.Database('sqlite3.db'); var server = restify.createServer(); var content = new Array(); db.all("SELECT id,content,title,description,slug,created,updated<Plug>PeepOpenublish_date,keywords_string FROM blog_blogpost", function(err, rows) { rows.forEach(function (row) { content.push({ id:row.id, slug:row.slug, description:row.description, title:row.title, content:row.content, keywords:row.keywords_string, created:row.created, updated:row.updated, publish_date:row.publish_date }); }); function respond(req,res,next){ var data = content[req.params.name-1]; res.json(data, {'content-type': 'application/json; charset=utf-8'}); } server.get ('/blog/:name',respond); server.head ('/blog/:name',respond); db.close(); }); server.listen(8080, function() { console.log('%s listening at %s', server.name, server.url); });
需要注意的是代码中的
var data = content[req.params.name-1];是因为数组的关系
res.json(data, {'content-type': 'application/json; charset=utf-8'});这部分则是对中文的支持,也就是UTF-8
结果
打开指定ID的时候就是下面的格式。{"id":221,"slug":"restify-sqlite3-nodejs-to-refactory-website","description":"","keywords":"restify RESTful nodejs refactory","created":"2014-03-15 09:30:44.145964","updated":"2014-03-16 01:40:34.374479","publish_date":"2014-03-15 09:22:33"}
format一下
{ "content" : "",
"created" : "2014-03-15 09:30:44.145964",
"description" : "有趣的是在有了数据之后,我们可以用很快的速度构建出一个app,构建出一个接口。我们要做的就是将系统一部分一部分解耦出来,成为一个又一个的独立部分",
"id" : 221,
"keywords" : "restify RESTful nodejs refactory",
"publish_date" : "2014-03-15 09:22:33",
"slug" : "restify-sqlite3-nodejs-to-refactory-website",
"title" : "nodejs restify sqlite3网站重构二,生成RESTful接口",
"updated" : "2014-03-16 01:40:34.374479"
}
运行
forever start app.js
最后效果可见:Phodal's
New Homepage
相关文章推荐
- 网站重构——轻量化的网站架构设计一,使用nodejs sqlite3查询数据
- 网站重构——轻量化的网站架构设计一,使用nodejs sqlite3查询数据
- 网站重构——轻量化的网站架构设计三,angular restify
- 网站重构——轻量化的网站架构设计四markdown angular
- 高性能网站架构设计之缓存篇(1)- Redis的安装与使用
- 高性能网站架构设计之缓存篇(1)- Redis的安装与使用
- MVC实用架构设计(三)——EF-Code First(3):使用T4模板生成相似代码
- 项目开发中的一些注意事项以及技巧总结 基于Repository模式设计项目架构—你可以参考的项目架构设计 Asp.Net Core中使用RSA加密 EF Core中的多对多映射如何实现? asp.net core下的如何给网站做安全设置 获取服务端https证书 Js异常捕获
- MVC实用架构设计(三)——EF-Code First(3):使用T4模板生成相似代码
- 关于模式的学习和使用交流(设计模式、架构模式。。)
- 网站架构的伸缩性设计
- Atitit.使用引擎加脚本架构的设计 使用php,js来开发桌面程序。。
- 分享23款使用纯CSS3生成的知名logo设计
- MVC框架设计-使用 JSF 架构进行设计
- 使用 xsd 工具从 RDL 架构生成类
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)和 Dubbo架构设计详解
- 优化网站设计(二十七):使用link而不是@import导入样式表
- 架构设计:系统间通信(21)——ActiveMQ的安装与使用
- 高并发高流量网站架构设计
- Linux 百万级网站架构设计