基于Express.js框架,使用RESTful Api

关于项目中的service.js

我将'gnomeontherun'演示项目中所使用的配置代码黏贴上来.

来自:https://github.com/ionic-in-action/chapter3

//注意,如果你没有配置依赖相关框架将会报错
//你可以手动单独安装这些框架

//npm install body-parser
//npm install express --save

//express是什么? Look This →_→ [url]http://www.expressjs.com.cn/[/url]
var express = require('express');

//这是nodeJs的文件系统模块,是一个简单包装的标准 POSIX 文件 I/O 操作方法集.
//这里之所以要使用我看他想读取一些演示数据 'data.json'
var fs = require('fs');

//bodyParser用于解析客户端请求的body中的内容,内部使用JSON编码处理,url编码处理以及对于文件的上传处理.
var bodyParser = require('body-parser');

var app = express();

app.use(express.static(__dirname));
app.use(bodyParser.json());
app.use(function (req, res, next) {
  res.set('Content-Type', 'application/json');
  next();
});

//这是一个app的http请求
app.get('/notes', function (req, res) {
  // Open the existing notes file
  fs.readFile(__dirname + '/data/notes.json', 'utf8', function (err, data) {

    // If we get an error, log it and return
    if (err) {
      res.status(500).end();
      return console.log(err);
    }

    res.status(200).send(data);

  });
})

// Update a note
app.put('/notes/:id', function (req, res) {
  // Open the existing notes file
  fs.readFile(__dirname + '/data/notes.json', 'utf8', function (err, data) {

    // If we get an error, log it and return
    if (err) {
      res.status(500).end();
      return console.log(err);
    }

    // Try to parse the JSON or return
    try {
      data = JSON.parse(data);
    } catch (e) {
      res.status(500).end();
      return console.log(e);
    }

    // Add body item to notes array
    data.forEach(function (note, index) {
      if (note.id == req.params.id) {
        data[index] = req.body;
      }
    });

    // Write file back to server
    fs.writeFile(__dirname + '/data/notes.json', JSON.stringify(data), function (err) {

      // If we get an error, log it and return
      if (err) {
        res.status(500).end();
        return console.log(err);
      }

      // No errors, everything is done so return new data
      res.status(200).send(data);
    });
  });
});

// Create a new note
app.post('/notes', function (req, res) {
  // Open the existing notes file
  fs.readFile(__dirname + '/data/notes.json', 'utf8', function (err, data) {

    // If we get an error, log it and return
    if (err) {
      res.status(500).end();
      return console.log(err);
    }

    // Try to parse the JSON or return
    try {
      data = JSON.parse(data);
    } catch (e) {
      res.status(500).end();
      return console.log(e);
    }

    // Add body item to notes array
    data.push(req.body);

    // Write file back to server
    fs.writeFile(__dirname + '/data/notes.json', JSON.stringify(data), function (err) {

      // If we get an error, log it and return
      if (err) {
        res.status(500).end();
        return console.log(err);
      }

      // No errors, everything is done so return new data
      res.status(201).send(data);
    });
  });
});

// Delete a note
app.delete('/notes/:id', function (req, res) {
  // Open the existing notes file
  fs.readFile(__dirname + '/data/notes.json', 'utf8', function (err, data) {

    // If we get an error, log it and return
    if (err) {
      res.status(500).end();
      return console.log(err);
    }

    // Try to parse the JSON or return
    try {
      data = JSON.parse(data);
    } catch (e) {
      res.status(500).end();
      return console.log(e);
    }

    // Add body item to notes array
    var index = -1;
    data.forEach(function (note, i) {
      if (note.id == req.params.id) {
        index = i;
      }
    });

    // If we found an item by that id, remove it
    if (index >= 0) {
      data.splice(index, 1);
    }

    // Write file back to server
    fs.writeFile(__dirname + '/data/notes.json', JSON.stringify(data), function (err) {

      // If we get an error, log it and return
      if (err) {
        res.status(500).end();
        return console.log(err);
      }

      // No errors, everything is done so return
      res.status(204).end();
    });
  });
});

//App的web端口监听在这里配置.
app.listen(3000, function () {
  console.log('Server started. Open http://localhost:3000 in your browser.');
});

相关推荐