【问题标题】:Post - Cannot GET error - Local server发布 - 无法获取错误 - 本地服务器
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多