simple-rest

Super simple REST API framework

Simple REST

Simple REST framework.

This is alpha version, API may change drastically with major versions. Performance is probably bad.

npm install simple-rest
rest = require("simple-rest");
 
// Example 
// If you return string response gets Content-Type: text/plain automatically. 
rest.get("/test", function() {
  return "return text/plain string";
});
 
// Automatic variable name mapping (order of arguments in function doesn't matter) 
// e.g. /user/1/name --> 1, name 
rest.get("/user/:userId/:userProperty", function(userPropertyuserId) {
  return userId+""+userProperty;
});
 
// chaining 
rest
  // if you return simple object then the response 
  // has Content-Type: application/json automatically 
  .get("/object", function () {
    return {msg: "return as application/json"};
  })
 
  // automatic setting Content-Type via function name 
  .get("/pdf", function asApplicationPdf() {
    return {msg: "return as application/pdf"};
  })
  // POST 
  .post("/post", function asNonExistent() {
    return "why"; // Content-Type: non-existent 
  })
 
  // file download? no problem! 
  .get("/file", function(File) {
 
    return File("package.json");
 
  })
 
  // auto-wire core module? not a problem! 
  .delete("/file/:name", function returnsStatusCode(fsname) {
    if(! fs.existsSync(name)) {
      return 404;
    } else {
      fs.unlinkSync(name);
      return 200;
    }
  })
 
  // asynchronous version of above 
  // Note: if Async is injected then framework automatically assumes 
  //       asynchronous callback will be called and ignores return 
  //       value of handler. 
  .delete("/fileAsync/:name", function returnsStatusCode(fsnameAsync) {
    fs.exists(name, function(exists) {
 
      setTimeout(function(){
        console.log("Unlink "+name);
        if(! exists) {
          Async(404);
        } else {
          fs.unlinkSync(name);
          Async(200);
        }
      }, 1000);
 
    });
  });