繁体   English   中英

如何使用Node.js构建典型的REST类型系统

[英]How to build a typical REST type system with Node.js

我真的很困惑如何使用Node.js构建典型的REST类型的Web应用程序(即使我使用套接字)。

在典型的WAMP堆栈中,您有一个公共javascript文件和服务器端PHP文件。 用户可能能够执行类似的JS函数

function updateDetails(){

 $.post('details.php', formData, function(data){
      console.log(data);
   },'json');
}

而服务器端的PHP文件就是这样的

var stmt = "UPDATE table SET user = :user";
var params = (':user', $user);
stmt->execute();

现在我知道node-mysql,但我不知道它是如何以相同的方式实现的。 如何在服务器端维护语句列表,并允许用户在客户端简单地执行这些语句。

我安装了node_modules / mysql。

在我的服务器(app.js)

var mysql = require('mysql'); 

但除非我在那里添加所有语句,否则我似乎无法从公共JS文件中访问它们。

有些库将数据库表作为资源包装并将它们公开为REST服务(GET,POST,PUT,DELETE)。

例如, sails.js为此目的使用Waterline 如果您不想从头开始编写路由,则应该查看其他类似的框架。

如果您只是使用快递(4.x),那么您可以声明如下路线:

// In users.js
var express = require('express');
var users = new express.Router();
users.get('/', function (req, res, next) {
    // access mysql, grab all users, then...
    res.json(results);
})
users.get('/:id', function (req, res, next) {
    var userid = req.params.id;
    // access mysql, grab user by id, then...
    res.json(result);
})
users.put('/', function (req, res, next) {
    var newUser = req.body;
    // you can also use POST instead of PUT, and alter where the information for the new user should come from.
    // insert a new row with the data found in newUser then...
    res.json(createdUser);
});
users.delete('/:id', function (req, res, next) {
    var userid = req.params.id;
    // delete the user by id then...
    res.json(deletedUser);
});

如果您真的喜欢冒险,或者让http方法完全符合预期,那么您可以包含用于更新用户的PATCH路由。

您可以选择直接在路由中包含mysql,也可以声明另一个模块,然后在路由中引用它。 我将完全完成其中一种方法。

// more complete version of /users/:id
var mysql = require('mysql');
var connectionString = 'fill me in';
var pool = mysql.createPool(connectionString);
users.get('/:id', function (req, res, next) {
    var userid = req.params.id;
    var statement = "SELECT * FROM 'users' WHERE id = ?";
    pool.query(statement, [userid], function (err, rows) {
        if (err) { res.status(500).json(err); } // if you want to expose why you can't get the user by id.
        else if (rows.length == 0) { res.status(404); } // could not find user with the given id.
        else { res.json(rows[0]); } // return the found user.
    });
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM