• express + restful


    express

    http://www.expressjs.com.cn/

    Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。

    http://www.expressjs.com.cn/starter/hello-world.html

    var express = require('express');
    var app = express();
    
    app.get('/', function (req, res) {
      res.send('Hello World!');
    });
    
    var server = app.listen(3000, function () {
      var host = server.address().address;
      var port = server.address().port;
    
      console.log('Example app listening at http://%s:%s', host, port);
    });

    restful api

    http://www.ruanyifeng.com/blog/2011/09/restful.html

    https://www.ibm.com/developerworks/library/ws-restful/index.html

    This article suggests that in its purest form today, when it's attracting this much attention, a concrete implementation of a REST Web service follows four basic design principles:

    • Use HTTP methods explicitly.
    • Be stateless.
    • Expose directory structure-like URIs.
    • Transfer XML, JavaScript Object Notation (JSON), or both.

    http://www.ruanyifeng.com/blog/2014/05/restful_api.html

    https://www.cnblogs.com/imyalost/p/7923230.html

    二、RESTful的特征和优点

    1、客户端-服务器(Client-Server):提供服务的服务器和使用服务的客户端分离解耦;

       优点:提高客户端的便捷性(操作简单)

            简化服务器提高可伸缩性(高性能、低成本)

            允许客户端服务端分组优化,彼此不受影响

    2、无状态(Stateless):来自客户的每一个请求必须包含服务器处理该请求所需的所有信息(请求信息唯一性);

       优点:提高可见性(可以单独考虑每个请求)

            提高可靠性(更容易故障恢复)

            提高了可扩展性(降低了服务器资源使用)

    3、可缓存(Cachable):服务器必须让客户端知道请求是否可以被缓存?如果可以,客户端可以重用之前的请求信息发送请求;

       优点:减少交互连接数

            减少连接过程的网络时延

    4、分层系统(Layered System):允许服务器和客户端之间的中间层(代理,网关等)代替服务器对客户端的请求进行回应,而客户端不需要关心与它交互的组件之外的事情;

       优点:提高了系统的可扩展性

            简化了系统的复杂性

    5、统一接口(Uniform Interface):客户和服务器之间通信的方法必须是统一化的。(例如:GET,POST,PUT.DELETE)

       优点:提高交互的可见性

            鼓励单独优化改善组件

    6、支持按需代码(Code-On-Demand,可选):服务器可以提供一些代码或者脚本并在客户的运行环境中执行。

       优点:提高可扩展性

    express + restful

    https://florianholzapfel.github.io/express-restify-mongoose/

    Easily create a flexible REST interface for mongoose models

    From the command line

    npm install express-restify-mongoose --save
    

    http://www.cnblogs.com/lkiversonlk/p/4878139.html

    Mongo, Express Restful接口搭建

    首先安装express-restify-mongoose

        npm install express-restify-mongoose --save

    然后新建一个router做Restful Service,假设我们的数据类是Customer,需要一个name字段和一个可选的comment字段.

    /* models.js */
    var express = require('express');
    var router = express.Router();
    var mongoose = require("mongoose");
    var resify = require("express-restify-mongoose")
    
    mongoose.connect("mongodb://localhost/test");
    
    resify.serve(router, mongoose.model('Customer', new mongoose.Schema(
        {
            name : {type : String, required : true},
            comment : {type : String}
        }
    )))
    
    module.exports = router;

    然后把这个router注册到express里

    /* in app.js */
    var models = require("[models.js位置]");
    ...
    app.use(models)

    OK,现在运行server测试下: http://localhost:3000/api/v1/Customers,Restful接口已经有了~

    GET http://localhost/api/v1/Customer/count
    GET http://localhost/api/v1/Customer
    POST http://localhost/api/v1/Customer
    DELETE http://localhost/api/v1/Customer
    
    GET http://localhost/api/v1/Customer/:id
    GET http://localhost/api/v1/Customer/:id/shallow
    PUT http://localhost/api/v1/Customer/:id
    POST http://localhost/api/v1/Customer/:id
    PATCH http://localhost/api/v1/Customer/:id
    DELETE http://localhost/api/v1/Customer/:id

    其它例子:

    https://github.com/florianholzapfel/express-restify-mongoose/blob/master/examples/todos/todos.js

    自己动手

     https://github.com/fanqingsong/web_data_visualization 

    buildwebservice_resty.js

    例子

    const express = require('express')
    const bodyParser = require('body-parser')
    const methodOverride = require('method-override')
    const mongoose = require('mongoose')
    const restify = require('express-restify-mongoose')
    const app = express()
    const router = express.Router()
    
    app.use(bodyParser.json())
    app.use(methodOverride())
    
    mongoose.connect('mongodb://localhost:27017/zhipin')
    
    restify.serve(router, mongoose.model('summary', new mongoose.Schema({
        Technology : { type: String },                    // 技术名称
        Count : { type: Number },                        // 技术数目
    })))
    
    app.use(router)
    
    app.listen(3000, () => {
      console.log('Express server listening on port 3000')
    })

    测试:

    GET http://localhost:3000/api/v1/summary

    GET http://localhost:3000/api/v1/summary/5b7ed6b40abe4e3714a7489a

     

     

  • 相关阅读:
    创建桌面快捷方式
    令牌桶在数据通信QoS流量监管中的应用
    cocos2d-x 实现clash of clans多点聚焦缩放场景
    NotePad++ 快捷键中文说明
    2017第24周日
    《自信力~成为更好的自己》晨读笔记
    不知道如何决定的时候就快速决定
    《意外之外》晨读笔记
    《从“为什么”开始》听书笔记
    解决电脑上网问题记录
  • 原文地址:https://www.cnblogs.com/lightsong/p/9563360.html
Copyright © 2020-2023  润新知