Blog

Blog

PHODAL

nodejs restify sqlite3网站重构二,生成RESTful接口

有趣的是在有了数据之后,我们可以用很快的速度构建出一个app,构建出一个接口。我们要做的就是将系统一部分一部分解耦出来,成为一个又一个的独立部分

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,updatedPeepOpenublish_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: 213,
slug: "be-a-geek-chapter-7-anywhere-css-2",
description: "样式与目标 下面也就是我们的样式",
title: "be a geek 7:无处不在的css 2",
content: "",
keywords: "beageek begeek javascript anywhere anywherecss",
created: "2014-03-07 01:00:51.901267",
updated: "2014-03-07 01:00:55.198979",
publish_date: "2014-03-07 01:00:51.269542"
}

运行

 forever start app.js

关于我

Github: @phodal     微博:@phodal     知乎:@phodal    

微信公众号(Phodal)

围观我的Github Idea墙, 也许,你会遇到心仪的项目

QQ技术交流群: 321689806

新书《前端架构:从入门到微前端》

《前端架构:从入门到微前端》是一本围绕前端架构的实施手册,从基础的架构规范,到如何设计前端架构,再到采用微前端架构拆分复杂的前端应用。本书通过系统地介绍前端架构世界的方方面面,来帮助前端工程师更好地进行系统设计。

前端架构包含以下五部分内容:

  • 设计:讲述了架构设计的模式,以及设计和制定前端工作流。
  • 基础:通过深入构建系统、单页面应用原理、前端知识体系等,来构建出完整的前端应用架构体系。
  • 实施:通过与代码结构的方式,介绍如何在企业级应用中实施组件化架构、设计系统和前后端分离架构。
  • 微前端:引入6种微前端的概念,以及如何划分、设计微前端应用,并展示了如何实现这6种微前端架构。
  • 演进:提出更新、迁移、重构、重写、重新架构等架构演进方式,来帮助开发人员更好地设计演进式架构。
comment

Feeds

RSS / Atom

最近文章

关于作者

Phodal Huang

Developer, Consultant, Writer, Designer

ThoughtWorks 高级咨询师

工程师 / 咨询师 / 作家 / 设计学徒

开源深度爱好者

出版有《前端架构:从入门到微前端》、《自己动手设计物联网》、《全栈应用开发:精益实践》

联系我: h@phodal.com

微信公众号: 与我沟通

标签