Node.js Express-获取API返回始终为200

Node.js Express-获取API返回始终为200,node.js,api,express,Node.js,Api,Express,我编写了一个GET API,用于打印传递的参数: exports.agency_information = (req, res, next) => { console.log({param: req.params.usercode}); }; 这是路由器: const router = require('express').Router(); const AgencyController = require('../controllers/agency'); router.get

我编写了一个
GET API
,用于打印传递的参数:

exports.agency_information = (req, res, next) => {
  console.log({param: req.params.usercode});
};
这是
路由器

const router = require('express').Router();

const AgencyController = require('../controllers/agency');

router.get('/:usercode', AgencyController.agency_information);

module.exports = router;
但是我不明白为什么当我调用
api
时总是返回
200ok
,而在Postman中这是返回:

<!doctype html>
<html lang="en">

<head>
    <meta charset="utf-8" />
    <link rel="icon" href="/favicon.ico" />
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <meta name="theme-color" content="#000000" />
    <meta name="description" content="Fare la constatazione amichevole non è mai stato così facile" />
    <link rel="apple-touch-icon" href="logo192.png" />
    <link rel="manifest" href="/manifest.json" />
    <title>ConstaFAST</title>
    <link href="/static/css/2.0624914a.chunk.css" rel="stylesheet">
    <link href="/static/css/main.02a2fc0a.chunk.css" rel="stylesheet">
</head>

<body><noscript>You need to enable JavaScript to run this app.</noscript>
    <div id="root"></div>
    <script>
        !function(i){function e(e){for(var r,t,n=e[0],o=e[1],u=e[2],l=0,f=[];l<n.length;l++)t=n[l],Object.prototype.hasOwnProperty.call(p,t)&&p[t]&&f.push(p[t][0]),p[t]=0;for(r in o)Object.prototype.hasOwnProperty.call(o,r)&&(i[r]=o[r]);for(s&&s(e);f.length;)f.shift()();return c.push.apply(c,u||[]),a()}function a(){for(var e,r=0;r<c.length;r++){for(var t=c[r],n=!0,o=1;o<t.length;o++){var u=t[o];0!==p[u]&&(n=!1)}n&&(c.splice(r--,1),e=l(l.s=t[0]))}return e}var t={},p={1:0},c=[];function l(e){if(t[e])return t[e].exports;var r=t[e]={i:e,l:!1,exports:{}};return i[e].call(r.exports,r,r.exports,l),r.l=!0,r.exports}l.m=i,l.c=t,l.d=function(e,r,t){l.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},l.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(r,e){if(1&e&&(r=l(r)),8&e)return r;if(4&e&&"object"==typeof r&&r&&r.__esModule)return r;var t=Object.create(null);if(l.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:r}),2&e&&"string"!=typeof r)for(var n in r)l.d(t,n,function(e){return r[e]}.bind(null,n));return t},l.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(r,"a",r),r},l.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},l.p="/";var r=this.webpackJsonpwww=this.webpackJsonpwww||[],n=r.push.bind(r);r.push=e,r=r.slice();for(var o=0;o<r.length;o++)e(r[o]);var s=n;a()}([])
    </script>
    <script src="/static/js/2.9ed2bde4.chunk.js"></script>
    <script src="/static/js/main.ea8659b8.chunk.js"></script>
</body>

</html>

看起来这可能是应用程序的默认页面,即使没有传递任何内容。您说过,无论参数如何,您的输出都是相同的。您似乎无法输出默认页面。这是有道理的,因为意大利人说“不可轻率对待”发表友好声明从来都不是一件容易的事。我会检查默认设置检查,看看是否可以让java脚本被允许,然后检查它是否工作

因为这是javascript,所以可能会有什么东西阻止java脚本允许它工作,而这可能是java脚本不工作时的默认页面

exports.agency_information = (req, res, next) => {
  console.log({param: req.params.usercode});
};
您可以尝试使用检查js是否也被禁用



首先,从服务器发送响应

exports.agency_information = (req, res, next) => {
    console.log({param: req.params.usercode});
    res.send('send something from server');
};
现在从邮递员调用您的api

例如,使用此

http://localhost:3000/api/agency/1234
上图:将您的端口号替换为服务器所在的端口 他正在跑步。1122是您要发送的参数,它 在控制台中打印

如果这是您的默认路由,那么它将被调用,您将在postman中看到响应,并在console中打印参数

更新服务器代码向上移动api路由应用。get(*)必须是最后一个。因为这个,你在邮递员网站上看到了html页面

这是更新的服务器代码

const express = require('express');
const app = express();
const path = require('path');
const morgan = require('morgan');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
require('dotenv').config()

const agencyRoutes = require('./api/routes/agency');
const companyRoutes = require('./api/routes/company');

const port = process.env.PORT || 3000;

mongoose.connect(process.env.DB_CONNECT, {
  useCreateIndex: true,
  useNewUrlParser: true,
  useUnifiedTopology: true
}, () => console.log('Connect to the database'));

mongoose.Promise = global.Promise;

app.use(morgan('dev'));
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

app.use( (req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*');
  res.header(
    'Access-Control-Allow-Headers',
    'Origin, X-Requested-With, Content-Type, Accept, Authorization'
  );

  if ( req.method === 'OPTIONS' ) {
    res.header('Access-Control-Allow-Methods', 'PUT, POST, PATCH, DELETE, GET');
    return res.status(200).json({});
  }

  next();
});

app.use('/api/agency', agencyRoutes);
app.use('/api/company', companyRoutes);

app.use(express.static(path.resolve(__dirname, '../www', 'build')));
app.get('*', (req, res) => {
  res.sendFile(path.resolve(__dirname, '../www', 'build', 'index.html'));
});

app.use( (req, res, next) => {
  const error = new Error('Not found');
  error.status = 404;
  next(error);
});

app.use( (error, req, res, next) => {
  res.status(error.status || 500);
  res.json({
    error: {
      message: error.message
    }
  });
});

app.listen(port, () => console.log(`Server up and running on port ${port}`));

如果我传递了一个参数,我也有同样的问题,它不会打印参数是的,但问题仍然存在!
res.send('sendsomefromserver')无法解决问题!你能告诉我如何从邮递员那里调用API吗?并显示您呼叫此路由器的代码。这是Postam呼叫
http://localhost:3000/api/agency/1234
使用
GET
方法。我只是用服务器的che代码更新了answare。请查看更新后的答案,因为app.get(*)route first导致了这个问题。接收所有get请求并完成它们。
const express = require('express');
const app = express();
const path = require('path');
const morgan = require('morgan');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
require('dotenv').config()

const agencyRoutes = require('./api/routes/agency');
const companyRoutes = require('./api/routes/company');

const port = process.env.PORT || 3000;

mongoose.connect(process.env.DB_CONNECT, {
  useCreateIndex: true,
  useNewUrlParser: true,
  useUnifiedTopology: true
}, () => console.log('Connect to the database'));

mongoose.Promise = global.Promise;

app.use(morgan('dev'));
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

app.use( (req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*');
  res.header(
    'Access-Control-Allow-Headers',
    'Origin, X-Requested-With, Content-Type, Accept, Authorization'
  );

  if ( req.method === 'OPTIONS' ) {
    res.header('Access-Control-Allow-Methods', 'PUT, POST, PATCH, DELETE, GET');
    return res.status(200).json({});
  }

  next();
});

app.use('/api/agency', agencyRoutes);
app.use('/api/company', companyRoutes);

app.use(express.static(path.resolve(__dirname, '../www', 'build')));
app.get('*', (req, res) => {
  res.sendFile(path.resolve(__dirname, '../www', 'build', 'index.html'));
});

app.use( (req, res, next) => {
  const error = new Error('Not found');
  error.status = 404;
  next(error);
});

app.use( (error, req, res, next) => {
  res.status(error.status || 500);
  res.json({
    error: {
      message: error.message
    }
  });
});

app.listen(port, () => console.log(`Server up and running on port ${port}`));