将PHP cURL请求转换为node.js
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将PHP cURL请求转换为node.js相关的知识,希望对你有一定的参考价值。
我正在考虑实现Summry,他们只提供php API连接示例 - 是否有人可以将它转换为我的JS请求?
我基本上只是希望它解析我给它的文本,没有什么超级幻想。
我试图在JS请求中看到CURLOPT_POSTFIELDS
和CURLOPT_HTTPHEADER
匹配的内容无济于事。不过,我可能会找错地方。
PHP示例
$long_article = "Long article text goes here";
$ch = curl_init("http://api.smmry.com/&SM_API_KEY=XXXXXXXXX&SM_LENGTH=14&SM_WITH_BREAK");
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Expect:")); // Important do not remove
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "sm_api_input=".$long_article);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
$return = json_decode(curl_exec($ch), true);
curl_close($ch);
...
const request = require('request-promise');
...
const long_article = 'Long article text goes here';
const r = request({
method: 'POST',
uri: `http://api.smmry.com/&SM_API_KEY=${process.env.SMMRY_API_KEY}`,
// headers: { Authorization: 'array(Expect:)' },
// body: { sm_api_input: long_article },
json: true,
});
request(r)
.then((parsedBody) => { debug(parsedBody); })
.catch((err) => { debug(err); });
我得到的错误是{ sm_api_error: 1, sm_api_message: 'INSUFFICIENT VARIABLES' }
所以我至少打到了正确的URL - 所以这是一个开始:)
提前致谢!
奥利
您传递给uri
的uri正在尝试使用查询字符串,但您没有正确格式化您请求的URI。查询字符串应以?
开头,并使用&
分隔键/值对。您的查询字符串以&
而不是?
开头
更改:
http://api.smmry.com/&SM_API_KEY=${process.env.SMMRY_API_KEY}&SM_LENGTH=14
&SM_WITH_BREAK
至:
http://api.smmry.com/?SM_API_KEY=${process.env.SMMRY_API_KEY}&SM_LENGTH=14&SM_WITH_BREAK
此外,您正在创建请求r
,然后将该请求传递给request
。这不是请求承诺模块的工作方式。在调用request(opts)
时,将立即对URI发出请求,并返回相应的Promise。一旦请求完成,将调用任何链式处理程序(.then()
,.catch()
,.finally()
)。
const request = require('request-promise')
const sm_api_input = 'Long article text goes here'
request({
method: 'POST',
headers: {
'Expect': '100-continue'
},
uri: `http://api.smmry.com/?SM_API_KEY=${process.env.SMMRY_API_KEY}&SM_LENGTH=14&SM_WITH_BREAK`,
form: {sm_api_input},
json: true,
timeout: 20000
})
.then(body => debug)
.catch(err => debug)
以上是关于将PHP cURL请求转换为node.js的主要内容,如果未能解决你的问题,请参考以下文章
如何使用Curl将这个mailchimp API请求转换为使用PHP的Guzzle?
全网最详细中英文ChatGPT-GPT-4示例文档-步骤指示智能生成从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)