我在示例RESTAPI中的POST请求中遇到了一个小问题。
我只有四个用于四个路由的回调方法:
app.get '/tasks', task.getAll
app.get '/tasks/done', task.getDone
app.get '/tasks/notdone', task.withoutDone
app.post '/tasks', task.newTask
以及:
模型=需要'/models/models.js'
exports.getAll = (req, res, next) ->
models.Task.find {}, 'title description, done', (err, tasks) ->
if err then err
res.send tasks
do next
exports.getDone = (req, res, next) ->
models.Task.find {done: true}, (err, tasks) ->
if err then err
res.send tasks
do next
exports.withoutDone = (req, res, next) ->
models.Task.find {done: false}, (err, tasks) ->
if err then err
res.send tasks
do next
exports.newTask = (req, res, next) ->
if req.params.title is undefined
return next new restify.InvalidArgumentError 'Title is needed'
taskData =
title: req.params.title
description: req.params.description
done: req.params.done
task = new Task(taskData)
task.save (err, data) ->
if err
return next new restify.InvalidArgumentError(JSON.stringify(error.errors))
else
res.json(data)
res.send 201, task
所以,你可以找到代码
here
在一个独特的要点。
我跑步时的痕迹
curl -i -X POST -d '{"title": "hello world", description: "lorem ipsum dolor amet", "done": true}' http://localhost:8080/tasks
在回答中,我得到了500个内部头:
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 59
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, Api-Version, Response-Time
Access-Control-Allow-Methods: GET, POST
Access-Control-Expose-Headers: Api-Version, Request-Id, Response-Time
Connection: Keep-Alive
Content-MD5: QFnWTtR6KfhLtGqWpGWZog==
Date: Mon, 17 Mar 2014 15:12:00 GMT
Server: task-API
Request-Id: 7d71a510-ade6-11e3-bd80-292785b198e2
Response-Time: 1
{"code":"InternalError","message":"restify is not defined"}