RESTful - nokitjs/nokit GitHub Wiki

RESTful

Nokit 用来开发 RESTful Service 是非常方便和简单的,通过简洁的 URL 路由配置,抽象出和资源对应的请求处理程序文件即可, 可以在处理程序中,根据需求实现 get / post / put 等 HttpMethod 即可。

一般目录结构

根目录
│ web.json
│ app.js
├─public
│  │  index.nsp
│  └─style
│       common.css
└─restful
      user.js

REST 的资源控制器示例

//定义资源控制器类型,通常一个资源类型视为一个控制器
function User() {};

//针对 User 的 post HttpMethod 处理方法
User.prototype.post = function() {
    var self = this;
        
    /*
    self.context 可以访问当前请求上下文对象
    self.context.routeData["name"] 可以获取路由数据
    self.context.request.queryData['name'] 可以获取 queryString 对应数据
    self.context.request.formData['name'] 可以获取 post 数据
    self.context.data("name") 可以获取客户端传过来的 queryString 或 formData
    self.context.request.body 可以访问请求的主体对象
    */
    
    var routeData = self.context.routeData;
    self.send("routeData:" + routeData["userId"]);
};

//针对 User 的 get HttpMethod 处理方法
User.prototype.get = function() {
    var self = this;
    self.send("routeData:" + routeData["userId"]);
};

/*
根据需求实现对应的 httpMethod 处理方法即可
*/

module.exports = User;

REST 的 web.json 配置

{
    /*
    配置 handler ,将指定的请求交由 REST Handler 处理,支持正则表达式,
    如示例,/api/... 开头的请求,交由 REST Handler 处理
    */
    "handlers": {
        "^/api/": "$./handlers/restful"
    },
    "restful": {
        "path": "./restful", //指定资源控制器的存放目录
        /*
        每一个路由至少需要指定 pattern(URL匹配模式) 和 target(目标 contrller)
        pattern 格式示例 "/user/{userId}" 其中 userId 是占位符变量,
        REST 的路由配置没有 action 配置项。
        */
        "routes": {
            "/api/user/{userId}": "./user"
        }
    }
}