【问题标题】:api call not happening in the server node proxy服务器节点代理中未发生 api 调用
【发布时间】:2019-06-12 13:28:21
【问题描述】:

更新 1:

  • 更改 api 路径后,我可以进行 api 调用,但出现此错误 (node:13480) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 4): RangeError: Invalid status code: respose utilcallService if--=->
  • 它指向我的 Resposne Util.js 文件。
  • 在下面提供我的代码 sn-p

服务器日志

  [nodemon] restarting due to changes...
[nodemon] starting `node node server/index.js`
index DocumentService---> function router(req, res, next) {
    router.handle(req, res, next);
  }
index allFileDataService---> function router(req, res, next) {
    router.handle(req, res, next);
  }
controllers---> [ 'C:/codebase/server/controllers/root.js' ]
server is listening on 1010
  callService ===>  /ewwewe/ewd
  URL ===>  http://wqqwdqw.com/ewwewe/ewd
allFileData 40---> smart
for allFileData Testing0---> smart
AppConstants.GET_JWT_TOKEN_URL---> https://credentials.login.js
jwt then-----> sdsd
then formatUrl ---> http://sports.com/run/play
allFileData suceess then0--->
  callService ===>  /sdsssd/sdsdsd/data
else  else if contentcatalogs responseutil.jsURL ===>  http://sports.com/run/play
  URL ===>  http://sports.com/run/play
express deprecated res.send(status, body): Use res.status(status).send(body) instead server\services\utils\ResponseUtil.js:58:30
(node:13480) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): RangeError: Invalid status code:  respose utilcallService if--=->
(node:13480) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
allFileData 40---> smart
for allFileData Testing0---> smart
AppConstants.GET_JWT_TOKEN_URL---> https://credentials.login.js
jwt then-----> sdsd
then formatUrl ---> http://sports.com/run/play
allFileData suceess then0--->
  callService ===>  /sdsssd/sdsdsd/data
else  else if contentcatalogs responseutil.jsURL ===>  http://sports.com/run/play
  URL ===>  http://sports.com/run/play
(node:13480) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 4): RangeError: Invalid status code:  respose utilcallService if--=->

ResponseUtil.js

callService: (res, url, uri) => {

      console.log("  callService ===> ", url);



      var formatUrl;

      if (uri) {
        formatUrl = uri + url;
      }
      else if (url == "/sdklsdklsd/sdklsdkllsdk/sdklklklsd") {
        formatUrl = AppConstants.REST_API_DNS_NAME_CONTENT_CENTRAL + url;
              console.log("  else if responseutil.jsURL ===> ", formatUrl);


      }else if (url == "/sdsssd/sdsdsd/data") {
        formatUrl = AppConstants.REST_API_DNS_NAME_CONTENT_CENTRAL + url;
              console.log("else  else if contentcatalogs responseutil.jsURL ===> ", formatUrl);


      } else {
        formatUrl = AppConstants.REST_API_DNS_NAME + url;
      }

      console.log("  URL ===> ", formatUrl);

      process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
      //console.log( " local Token => ", authJwtToken);
      if (!credentials.auth.jwtToken) {

        axios.get(AppConstants.GET_JWT_TOKEN_URL, {
          auth: {
            username: credentials.auth.racfId, password: credentials.auth.password
          }
        })
          .then((jwtResponse) => {
            //console.log('------jwtResponse Res------>>>> ', jwtResponse)
            var jwtToken = `Bearer ${jwtResponse.data.jwt}`;
            //console.log('------Token Res------>>>> ', jwtToken)
            axios.get(formatUrl, { headers: { "Authorization": jwtToken } })
              .then((response) => {
                return res.json(response.data);
              })
              .catch((error) => {
                if (error.response) {
                  return res.send(" respose utilcallService if--=->",error.response.data);
                }
                else {
                  return res.send("callService else--=->",error);
                }

              })

          })
          .catch((error) => {
            return res.send("callService second catch",error);
          })
          ;
      }
      else {
        var authJwtToken = `Bearer ${credentials.auth.jwtToken}`;
        axios.get(formatUrl, { headers: { "Authorization": authJwtToken } })
          .then((response) => {
            return res.json(response.data);
          })
          .catch((error) => {
            if (error.response) {
              return res.send(error.response.data);
            }
            else {
              return res.send(error);
            }
          })

      }

    },
  • 我正在通过handleKeyPress 方法进行post api 调用。 http://sports.com/run/play
  • 我正在尝试通过节点代理来实现。
  • 现在呼叫发生在客户端,但我收到404 Not Found
  • 我在服务器端进行了调试,没有发生 api 调用。
  • 如果我在此方法中添加控制台,则不会打印任何内容
  • 即使我在服务器的 index.js 中添加了正确的路由
  • 你能告诉我如何解决它吗?
  • 在下面提供我的客户端、服务器和日志

客户端 API 调用

handleKeyPress = e => {

        console.log("handleKeyPress--->", e);


        if (e.keyCode === 13) {
            this.setState({ open: false });
            if (e.target.value) {
                this.setState({
                    display: !this.state.display,
                    chipName: this.state.value,
                    imageName: this.state.value,
                });
                // this.props.selectedValue(this.state.value);
            }
        }

        this.props.actions.allFileDataData(this.getResultData);
    };

动作文件

export function allFileDataData(callback) {

    console.log(" downloadDocumentData----> ");



    var height = 'gr';
    var searchVal = height;
    var searchMode = 'smart';

    //we are using this replace method to hack the name search Mode
    height = height.replace('/', '%2F');
    height = height.replace('#', '%23');
    height = height.replace('+', '%2B');
    height = height.replace('.', '%2E');
    height = height.replace(/'|-/g, "");
    height = height.replace(/ /g, "%20");

    let environment = globalConfig.getConfig('environment');
    searchVal = searchVal.replace(/'|-/g, "");

    var url = `/psv/api/v1/allFileData/${searchMode}/${height}`;
    console.log(" fetchProviderData Url---> ", url);
    if (environment !== "local") {
        url = `/psv/api/v1/allFileData/${searchMode}/${searchVal}`;
        console.log(" inside if fetchProviderData Url---> ", url);
    }
    console.log(" Url----> ", url, searchMode, searchVal, height);

    const apiValues = {};

    let skysData = [];
    let skyData = {};

    skyData.name = 'Tax ID';
    skyData.value = '800346628'; //providerPimsIds;
    skysData.push(skyData);

    apiValues.fieldFilters = skysData;



    console.log("skyDatas--->", apiValues);
    const URL = `http://sports.com/run/play`;

    return (dispatch) => {

        axios
            .post(URL, apiValues)
            .then(response => {
                console.log("then this.props--->", this);
                //  callback(response);

                console.log('success postpostByContractFilterUploadLOA');
            }).catch(err => {


                console.log('error postByContractFilter');

            });

    };
}

服务器

index.js

const allFileDataService = require('./allFileData/allFileData');
console.log("index allFileDataService--->", allFileDataService); 

index allFileDataService---> function router(req, res, next) {
    router.handle(req, res, next);
  }

router.use('/allFileData', allFileDataService);

allFileData.js

const express = require('express');
const axios = require('axios');
const mime = require('mime-types');

const router = express.Router();
const ResponseUtil = require('../../utils/ResponseUtil');
const AppConstants = require('../../../constants/AppConstants');

const credentials = require('../../../internals/credentials.json');

const memberGroupingHelper = require('../../wewewe/wewewewe/memberGrouping');
const exportHelper = require('../../wewewe/wewewewe/pcpExportHelper');
const formatExportData = require('../../wewewe/wewewewe/formatExportData');

const pcpCommonHelper = require('../../wewewe/wewewewe/pcpCommonHelper');
const pcpProvDataHelper = require('../../helpers/group/getProvData');


const { PcpAggregateProvidersApi } = require('erererer');


router.get('/:searchMode/:height', (req, res, next) => {


    const { originalUrl } = req;


    const mode = req.params.searchMode;

    const value = encodeURIComponent(req.params.height);


    console.log("allFileData 40--->", mode);
    console.log("for allFileData Testing0--->", mode);

    const url = `/sdsssd/sdsdsd/data`;
    console.log("AppConstants.GET_JWT_TOKEN_URL--->", AppConstants.GET_JWT_TOKEN_URL);

    var formatUrl = AppConstants.REST_API_DNS_NAME_CONTENT_CENTRAL + url;
    const apiValues = {};

    let skysData = [];
    let skyData = {};

    skyData.name = 'dfdfdf ID';
    skyData.value = 'dfdfdfdff'; //providerPimsIds;
    skysData.push(skyData);

    apiValues.fieldFilters = skysData;


    axios.get(AppConstants.GET_JWT_TOKEN_URL, {
        auth: {
            username: credentials.auth.racfId, password: credentials.auth.password
        }
    })
        .then((jwtResponse) => {
            console.log("jwt then----->", jwtResponse.data.jwt);
            console.log('then formatUrl --->', formatUrl);
            return axios.post(formatUrl, apiValues, {
                headers: {
                    "Authorization": `Bearer ${jwtResponse.data.jwt}`,
                    "Content-Type": 'application/json'

                }
            })

                .then((response) => {
                    // try {
                    console.log("allFileData suceess then0--->");

                    return ResponseUtil.callService(res, url);

                })

                .catch((e) => {
                    // Catch any error that occurred in the promise chain...
                    if (e.response) {
                        return res.status(e.response.status).send(e.response.data);
                    }
                    return res.status(500).send(e.message || 'Something wrong');
                });

        });


    // ResponseUtil.callService(res, url);



});

module.exports = router;

服务器日志

[nodemon] restarting due to changes...
[nodemon] restarting due to changes...
[nodemon] starting `node node server/index.js`
index DocumentService---> function router(req, res, next) {
    router.handle(req, res, next);
  }
index allFileDataService---> function router(req, res, next) {
    router.handle(req, res, next);
  }
controllers---> [ 'C:/codebase/server/controllers/root.js' ]
server is listening on 1010
  callService ===>  /ewwewe/ewd
  URL ===>  http://wqqwdqw.com/ewwewe/ewd

【问题讨论】:

    标签: javascript node.js reactjs express redux


    【解决方案1】:

    根据您的代码,您将 HTTP 请求发送到 http://sports.com/run/play,而不是您自己的服务器:

    const URL = `http://sports.com/run/play`;
    return (dispatch) => {
            axios
                .post(URL, apiValues)
                //...
           };
    

    这就是为什么在服务器端什么都没有发生的原因。当GET http://sports.com/run/play 返回404,你也会得到404 Not Found 错误。

    【讨论】:

    • 嘿,你能不能更新一下我的代码 sn-p,太混乱了:(
    • @zizi 我的意思是,你需要在axios中使用正确的URL
    • 其实它是一个post调用,在客户端我可以用作get,在服务器我可以用作post吗?
    • 这与 POST 或 GET 无关。除非您是 http://sports.com 的所有者并且正在其生产环境中进行调试(这不太可能),否则您的客户端请求会被发送到错误的位置。
    • - 更改 api 路径后,我可以进行 api 调用,但我收到此错误 (node:13480) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 4): RangeError: Invalid status code: respose utilcallService if--=-> - 它指向我的 Resposne Util.js 文件。 - 在上面提供我的代码 sn-p
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 2020-01-09
    • 2013-10-31
    • 2020-04-19
    • 1970-01-01
    相关资源
    最近更新 更多