【问题标题】:How to call restfull API inside router using express如何使用express在路由器内部调用restful API
【发布时间】:2019-01-27 11:38:11
【问题描述】:

我想使用 express.js 检索此链接中的数据:https://api.rajaongkir.com/starter/cost

我为前端使用 react.js 创建了单页应用程序网站,因此我需要在后端调用此路由:/shipping/check/cost 以获取数据。但我不知道如何在路由器快递内部请求。

我从未在别人的网站上做过 Restful API。 我只是复制了文档中的内容,但是在使用 node.js 而不是 express.js 的文档中。 https://rajaongkir.com/dokumentasi/starter#cost-response

当我运行它时,我什么也得不到。

我的路线

import {Router} from 'express';
import * as ShippingRouter from './controller'

const routes = new Router();

routes.post('/shipping/check/cost',ShippingRouter.checkCost);

export default routes;

控制器

import db from '../../config/conn';
import keys from '../../config/keys';
import jwt from 'jsonwebtoken';
import qs from 'querystring';
import request from 'request';
export const checkCost =(req,res)=>{
    var options = {
        "method": "POST",
        "hostname": "api.rajaongkir.com",
        "port": null,
        "path": "/starter/cost",
        "headers": {
            "key": "mykey",
            "content-type": "application/x-www-form-urlencoded"
        }
    };
   var reqCost= https.request(options,function(ress){
       var chunks = [];

       ress.on("data", function (chunk) {
           chunks.push(chunk);
       });

       ress.on("end", function () {
           var body = Buffer.concat(chunks);
           res.json(body.toString());
       });
    })
    reqCost.write(qs.stringify({
        origin: '501',
        destination: '114',
        weight: 1700,
        courier: 'jne'
    }));
    reqCost.end();


}

【问题讨论】:

  • 你没有显示你调用 API 的位置吗?另外,请详细说明“我什么都没有” - 你没有数据?你没有收到网络请求?你没有错误?等

标签: javascript node.js express


【解决方案1】:

我要检查的第一件事是您使用的 POST HTTP 动词是否正确。您说您想从 API 获取数据,在这种情况下,您应该使用 GET 而不是 POST(查看 API 文档了解更多信息)。

除此之外,请查看this repository 我在哪里使用快递以及我如何处理电话。

【讨论】:

    猜你喜欢
    • 2021-05-07
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    • 1970-01-01
    • 2021-08-16
    • 2015-09-22
    相关资源
    最近更新 更多