2016-11-02 60 views
0

所以我创建了一个API来创建问题并获得有关问题id的答案,但每当我使用邮递员创建POST请求时都会回答。我无法向/ questions/ID/answers发送POST请求404错误

每当我创建一个POST请求http://localhost:3000/api/questions/ID/answers它给了我404我使用节点宁静的包,用于创建此API,这里是架构

// Dependencies 
var restful = require('node-restful'); 
// Database 
var mongoose = restful.mongoose; 

var Schema = mongoose.Schema; 

// Question Schema 
var QuestionSchema = new Schema({ 
    qTitle: { 
    type: String, 
    required: true 
    }, 
    qBody: { 
    type: String, 
    required: true 
    }, 
    created_at: { 
    type: Date 
    }, 
    updated_at: { 
    type: Date 
    }, 
    answers: [{ 
    aTitle: { 
     type: String, 
     required: true 
    }, 
    aBody: { 
     type: String, 
     required: true 
    }, 
    created_at: Date, 
    updated_at: Date 
    }] 
}); 


// Export the question schema 
module.exports = restful.model('Questions', QuestionSchema); 

如果有,如果你有任何错误或希望看到更多的代码让我知道!

这里是我的路线

'use strict'; 
var express = require('express'); 

var router = express.Router(); 

var Question = require('../models/question'); 

Question.methods(['get', 'put', 'post', 'delete']); 
Question.register(router, '/questions'); 


// Exports the router 
module.exports = router; 
+0

另外,据我所知,404意味着它不能被发现,但我认为我可以做与/问题/ ID /回答POST请求并仍然将我在postman中设置的json数据注入到我使用的特定问题中。 – Ethan

+0

你也可以粘贴你的路线吗? – SpunkyLive

回答

0

我想你应该添加:id/answers

Question.register(router, '/questions/:id/answers'); 
+0

这是做了一些事情,但现在它是qTitle&qBody的验证错误 – Ethan

+0

我删除了所需的标签,现在它只是创建新的空白问题,而其中没有答案。奇怪 – Ethan

0

根据节点的RESTful你需要打开详细的文档:在使用自定义的航真:

Question.route('answers', { 
method:'post', 
detail: true, 
handler: function(req, res, next) { 
    // req.params.id holds the resource's id 
    res.send("I'm at /questions/:id/answers") 
} 

});

这是完全未经测试的,可能不完全正确,因为您的模型非常复杂,所有示例都非常简单。但是你绝对需要一个自定义路线。这个小代码片段可能会建立一堆你不想要的路由,但它应该指向你正确的方向。

我只花了快速查看文档在这里: http://www.baugarten.me/node-restful/