2017-02-14 40 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

相關問題