node.js php,node.js请求php接口

这篇博客详细介绍了在 Node.js 开发中如何使用 request 和 axios 模块发起 GET 和 POST 请求,包括处理 JSON 数据、传递参数以及上传文件。示例代码展示了如何向 PHP 服务器接口发送请求并解析响应数据。
摘要由CSDN通过智能技术生成

在nodejs的开发中,有时需要后台去调用其他服务器的接口,这个时候,就需要发送HTTP请求了

现在我们来模拟一下简单地数据请求

//request.php

echo 10;

?>

1.当然也可以使用axios来发送请求

2.当时我们使用request来发送这个请求

a). 现在我们通过express来搭建一个项目

(具体流程自行百度吧,教程很多。。)

b). 安装request模块

cnpm install request --save-dev

c). 然后在routes下的index.js文件下写我们的请求

var express = require('express');

var router = express.Router();

//引入request模块

var request = require("request");

/* GET home page. */

router.get('/', function(req, res, next) {

//向我们刚才创建的request.php文件发起请求

request('http://localhost/node-request/php/request.php', function (error, response, body) {

if (!error && response.statusCode == 200) {

console.log(body) // 打印获取到的数据,这里输出10

}

})

//渲染主页

res.render('index', { title: 'Express'});

});

module.exports = router;

d). POST application/json

//requestJson.php

$obj = '{"age":20}';

echo json_encode($obj);

?>

e). GET请求

这时候index.js文件下是这样的

var express = require('express');

var router = express.Router();

var request = require("request");

/* GET home page. */

router.get('/', function(req, res, next) {

request({

url: "http://localhost/node-request/php/requestJson.php",

method: "GET",

json: true,

headers: {

"content-type": "application/json",

}

}, function(error, response, body) {

if (!error && response.statusCode == 200) {

body = JSON.parse(body);

console.log(body.age);//这里输出的是20

}

});

res.render('index', { title: 'Express'});

});

module.exports = router;

对于请求中传递参数,如果是get方法的话,直接将参数拼接到url后面就好了

f). 对于post请求

request.post('http://service.com/upload', {form:{key:'value'}})

// or

request.post('http://service.com/upload').form({key:'value'})

// or

request.post({url:'http://service.com/upload', form: {key:'value'}}, function(err,httpResponse,body){ /* ... */ })

对于多部分/表单数据,我们使用@ FelixGE格式数据库。对于大多数情况下,您可以通过FromDATA选项传递您的上传表单数据。

var formData = {

// Pass a simple key-value pair

my_field: 'my_value',

// Pass data via Buffers

my_buffer: Buffer.from([1, 2, 3]),

// Pass data via Streams

my_file: fs.createReadStream(__dirname + '/unicycle.jpg'),

// Pass multiple values /w an Array

attachments: [

fs.createReadStream(__dirname + '/attachment1.jpg'),

fs.createReadStream(__dirname + '/attachment2.jpg')

],

// Pass optional meta-data with an 'options' object with style: {value: DATA, options: OPTIONS}

// Use case: for some types of streams, you'll need to provide "file"-related information manually.

// See the `form-data` README for more information about options: https://github.com/form-data/form-data

custom_file: {

value: fs.createReadStream('/dev/urandom'),

options: {

filename: 'topsecret.jpg',

contentType: 'image/jpeg'

}

}

};

request.post({url:'http://service.com/upload', formData: formData}, function optionalCallback(err, httpResponse, body) {

if (err) {

return console.error('upload failed:', err);

}

console.log('Upload successful! Server responded with:', body);

});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值