2017-02-14 22 views
1

我想创建一个API使用本地服务器进行测试。路线 'GET'可以正常工作,但'POST'有问题,并且返回'无法获取/添加/名称'。我正在使用node.js和Express开发API。当路线设置为“POST”时,为什么我会收到邮件?哪里有问题?后 - 无法获取错误 - 本地服务器

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); 
      } 
     }); 
    }); 
}); 

预先感谢您。

+1

你是怎么从客户端调用它的?我希望你不只是在浏览器的地址栏中粘贴'http:// localhost:3000/add/some_item',希望它能够正常工作? –

+0

你的意思是我如何运行服务器?对不起,我是新手。 –

+1

不,我的意思是你如何从客户端调用POST端点?你向服务器发出请求,对吧?你如何提出这个要求? –

回答

0

要测试POST请求,您可以使用Postman进行测试。如果您使用浏览器来调用api,它将是GET方法而不是POST。

POST request in postman

相关问题