2016-07-15 165 views
0

我处理与快速路由器PUT/API /结帐路线: this.router.put('/:id/checkout', (req, response, next) => { /*...*/ });如何在快速路由器路由处理程序中将PUT请求重定向到POST请求?

现在,当我处理与不同的第三方服务付费的不同类型的其中之一预计POST请求,我正在寻找一种方式来处理的PUT请求通过执行POST请求到第三方服务端点。我怎么做 ?

我现在所做的是直接执行POST请求request.post

在这一点上的挑战是如何处理资源移动的响应。

request.post({ 
    url : 'https://paymentgateway.com/charge', 
    form : { 
    product_id  : product_id, 
    amount   : amount 
    } 
}, (err, httpResponse, body) => { 

我来到这里的响应是httpResponse.statucCode === 302body === <html><head><title>Object moved</title></head><body>。不知道如何处理这个。具有相同请求参数的HTML表单自动重定向客户端以重定向URL。

+0

如果客户做一个'PUT'请求到服务器,你不能让它通过的HTTP响应代码的手段做了'POST'请求​​到另一台服务器,而不是(至少不是“自动”像30X)。代理你的请求已经是一个可行的解决方案。 – robertklep

+0

我现在面临的挑战是代理请求返回重定向状态码302.不知道如何处理它。 – MobileDream

+0

'request'不会遵循针对非GET请求发出的重定向,除非您将'followAllRedirects'设置为'true'。 – robertklep

回答

0

httpResponse返回给请求结帐操作的客户端执行该作业。客户端自动处理重定向。

}, (err, httpResponse, body) => { 

    if (err) { 
    logger.error(err); 
    return response.status(err.code || 500).send(err); 
    } 

    return response.status(httpResponse.statusCode).send(httpResponse); 
});