找不到NodeJS API Rest 404而无法获取

时间:2018-01-12 08:16:10

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

Hy Guys我尝试制作一个简单的API,但我想做一些事情,因为我不能学习nodejs不长。我想要而不是api显示

  

无法获取/ ROUTE

显示此

  

{       "代码":404,       "消息":"未找到"   }

Att所有路线。

我的代码:

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和删除,juste做一个简单的CRUD。

2 个答案:

答案 0 :(得分:0)

我看到一件可能影响预期行为的事情。您在最具体的路线之前宣布更一般的路线。

这个是如此通用,即将处理所有请求

  

app.all( '/ *',

这个包含在前一个中,所以没有人会在这里处理。

  

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

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

答案 1 :(得分:0)

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

我改变条件并且有效。