【问题标题】:NodeJS API Rest 404 not found instead cannot getNodeJS API Rest 404 not found 而是无法获取
【发布时间】:2018-06-21 16:05:28
【问题描述】:

嗨,伙计们,我尝试制作一个简单的 API,但我想做一些不能做的事情,因为我刚学 nodejs 不久。我想要而不是 api 显示

无法获取 /ROUTE

显示这个

{ “代码”:404, “未找到信息” }

攻击所有路线。

我的代码:

var http = require("http");
var express = require('express');
var app = express();
var mysql      = require('mysql');
var bodyParser = require('body-parser');

var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : 'root',
  database : 'restapi',
  port     : '8889'
});


connection.connect(function(err) {
  if (err) throw err
  console.log('Congrats you are connected')
})

app.use( bodyParser.json() );       // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({     // to support URL-encoded bodies
  extended: true
}));

var server = app.listen(3000, "127.0.0.1", function () {

var host = server.address().address
var port = server.address().port

console.log("Example app listening at http://%s:%s", host, port)

});

app.all('/*', function(req, res, next) {
// CORS headers

res.header("Access-Control-Allow-Origin", "*"); // restrict it to the required domain
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
// Set custom headers for CORS
res.header('Access-Control-Allow-Headers', 'Content-type,Accept,X-Access-Token,X-Key');
if (req.method == 'OPTIONS') {
    res.status(200).end();
} else {
    next();
 }
});

//GET Domains
app.get('/api/domains.json', function (req, res) {
  console.log(req);
  connection.query('select * from domain', function (error, results, fields) {
  if (error) throw error;
  var user = results[0];
  if (user == undefined) {
      res.status(404);
      res.send({
          code: 404,
          message: "Not found"
      });
  } else {
      res.send({
          code: 200,
          message: 'success',
          datas: results
      });
    }
 });
 });

所以目前它只是一个请求,但我会尝试添加 POST、PUT 和 Delete,只是做一个简单的 CRUD。

【问题讨论】:

    标签: node.js http-status-code-404


    【解决方案1】:

    我看到一件事会影响预期的行为。您在最具体的路线之前声明了更一般的路线。

    这个太通用了,可以处理所有请求

    app.all('/*',

    而且这个包含在前一个中,所以这里不会处理任何请求。

    app.get('/api/domains.json',

    尝试更改两条路线的顺序,并告诉我它是否会改变行为。

    【讨论】:

      【解决方案2】:
      res.header('Access-Control-Allow-Headers', 'Content-type,Accept,X-Access-Token,X-Key');
      if (req.method == 'OPTIONS') {
          res.status(200).end();
      } else {
        res.status(404);
        res.send({
            code: 404,
            message: "Not found"
        });
      }
      

      我改变了条件,它就起作用了。

      【讨论】:

        猜你喜欢
        • 2018-04-07
        • 2018-12-10
        • 1970-01-01
        • 1970-01-01
        • 2016-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多