【发布时间】:2017-07-02 22:31:40
【问题描述】:
我正在尝试使用本地服务器创建 API 进行测试。路线 “GET”工作正常,但是“POST”有问题,它返回“Cannot GET /add/name”。我正在使用 node.js 和 Express 开发 API。为什么当路由设置为“POST”时我会收到 get?问题出在哪里?
var fs = require('fs');
var data = fs.readFileSync('events.json');
var allEvents = JSON.parse(data);
console.log(allEvents);
console.log('Server running.');
var express = require('express');
var app = express();
var sever = app.listen(3000, listening);
function listening() {
console.log('Serving...');
}
app.use(express.static('website'));
//GET and send all data from JSON
app.get('/all', sendAll);
function sendAll(request, response) {
response.send(allEvents);
}
//POST new data to JSON
app.post('/add/:name', addData);
function addData(request, response) {
var newData = request.params;
var name = newData.name;
var eventType = newData.eventType;
var reply;
// var newEvent = {
// name: ":name",
// eventType: ":eventType",
// };
var newData = JSON.stringify(allEvents, null, 2);
fs.writeFile('events.json', newData, finished);
function finished(err) {
console.log('Writting');
console.log(err);
var reply = {
word: word,
score: score,
status: 'Success'
}
response.send(reply);
}
}
请求
$(function() {
//HTML
var $list = $('#list');
var jsonURL = '../events.json'
$.ajax({
type: 'GET',
url: '/all',
success: function(data) {
console.log('Data received', data);
$.each(data, function (type, string) {
$list.append('<li>' + type + " : " + string + '</li>');
});
},
error: function (err) {
console.log('Error, data not sent.', err);
}
});
$('#submit').on('click', function () {
// var newEvent = {
// name: $name.val(),
// eventType: $eventType.val(),
// };
var name = $('#fieldName').val();
var eventType = $('#fieldEventType').val();
console.log(name);
$.ajax({
type: 'PUT',
url: '/add/' + name,
success: function (addData) {
$list.append('<li>name: ' + name + '</li>');
},
error: function (err) {
console.log('Error saving order', err);
}
});
});
});
提前谢谢你。
【问题讨论】:
-
如何从客户端调用它?我希望您不只是将
http://localhost:3000/add/some_item粘贴到您的网络浏览器的地址栏中,希望它能够正常工作? -
你的意思是我如何运行服务器?抱歉,我是新手。
-
不,我的意思是您如何从客户端调用 POST 端点?你向你的服务器发出请求,对吧?你是如何提出这个要求的?
-
我不确定你的意思。就像我说的,我的编码知识非常有限。所以回答你的第一个问题,是的,我确实认为我可以使用路由添加一个对象。在上一篇教程中,我关注了link,我已经成功做到了,但现在我自己尝试,有些不对劲。
-
@DiegoOriani — 这有两个部分。一个 HTTP 服务器(你已经向我们展示了它的代码)和一个 HTTP 客户端(可能是一个 Web 浏览器,但你还没有向我们展示)。您收到的错误消息表明客户端正在发送 GET 请求。您还没有告诉我们您正在做什么来让客户提出请求。
标签: javascript api express post routes