restify入門

restify是用於編寫RESTful API的Node.js的模塊。mongodb

下面介紹如何使用restify和mongodb編寫一個面向geek的招聘平臺,使用RESTful API發佈和查看用工需求。數據庫

restify = require 'restify'
mongojs = require mongojs
ip_addr = '127.0.0.1'
port =  '3000'

server = restify.createServer(name : "geekjob")

server.listen(port ,ip_addr, ->
 console.log('%s listening at %s ', server.name , server.url))

運行:npm

coffee geek-job.coffee

很好,雖然什麼也沒幹,可是已經能跑了!json

restify模塊有不少內置插件,不用白不用。app

server.use restify.queryParser()
server.use restify.bodyParser()
server.use restify.CORS()
  1. restify.queryParser()插件用於解析HTTP請求結果存在req.query框架

  2. restify.bodyParser()將請求數據轉化成CoffeeScript對象。curl

  3. restify.CORS()添加CORS支持。函數

鏈接MongoDB數據庫post

connection_string = '127.0.0.1:27017/geekjob';
db = mongojs(connection_string, ['geekjob']);
jobs = db.collection("jobs")

準備工做完成了。開始幹正事,定義CRUD。測試

PATH = '/jobs'
server.get({path : PATH, version : '0.0.1'} , list_all_jobs)
server.get({path : PATH +'/:jobId', version : '0.0.1'} , show_job)
server.post({path : PATH , version: '0.0.1'}, add_new_job)
server.del({path : PATH +'/:jobId', version: '0.0.1'} , remove_job)

框架已經有了,往裏填回調函數:

list_all_jobs = (req, res , next) ->
    res.setHeader('Access-Control-Allow-Origin','*')
    jobs.find().limit(20).sort({postedOn : -1} , (err , success) ->
        console.log('Response success '+success)
        console.log('Response error '+err)
            res.send(200 , success)
            next()
        else
            next(err)
    )


show_job = (req, res , next) ->
    res.setHeader('Access-Control-Allow-Origin','*')
    jobs.findOne({_id:mongojs.ObjectId(req.params.jobId)} , (err , success) ->
        console.log('Response success '+success)
        console.log('Response error '+err)
        if success
            res.send(200 , success)
            next()
        else
            next(err)
    )


add_new_job (req , res , next) ->
    job = {}
    job.title = req.params.title
    job.description = req.params.description
    job.location = req.params.location
    job.postedOn = new Date()

    res.setHeader('Access-Control-Allow-Origin','*')

    jobs.save(job , (err , success) ->
        console.log('Response success '+success)
        console.log('Response error '+err)
        if success
            res.send(201 , job)
            next()
        else
            next(err)
    )

remove_job = (req , res , next) ->
    res.setHeader('Access-Control-Allow-Origin','*')
    jobs.remove({_id:mongojs.ObjectId(req.params.jobId)} , (err , success) ->
        console.log('Response success '+success)
        console.log('Response error '+err)
        if success
            res.send(204)
            next()      
        else
            next(err)
    )

O.K. 搞定了。快吧?

curl測試下:

curl -i -X POST -H 'Content-Type: application/json' -d '{"title":"CoffeeScript Developer Required" , "description":"NodeJS Developer Required" , "location":"A.T. Field"}' http://127.0.0.1:3000/jobs

curl -is http://127.0.0.1:3000/jobs
相關文章
相關標籤/搜索