WordPress WP_Http与Node.js Express发送和接收数据的方法

Node.js Express可用于微服务,简单介绍下与WordPress服务之间的http通信方法。

WordPress发送请求:

function micro_request_post($api, $auth = false) {
	$url = 'http://127.0.0.1:3006' . $api;
	$body = array( 'a' => 'b' );  // 实体参数
	$headers = array();

	if ($auth) { // 认证token(可选)
		$headers['Authorization'] = $auth; 
	}

    $args = array(
    	'method'  => 'POST',
    	'body'    => $body,
    	'headers' => $headers
    );

    $request = new WP_Http;
    $result = $request->request( $url, $args );

	if (is_wp_error($result)) {  
	    // 处理错误情况  
	    // echo 'Error: ' . $response->get_error_message();  
	    return null;
	}

	return json_decode($result['body']);
}

Node.js Express接收请求:

exports.micro_request_post = (req, res, next) => { 
 	console.log(req.headers, req.body, req.params, req.query);

	res.send({
		valid: true
	});
}

用于接收数据的req,常用参数有:req.headers, req.body, req.params, req.query

注意:req.body如果为undefined,通常是因为没有安装中间件body-parser

$ npm install body-parser --save

正确地使用body-parser中间件:

const express = require('express')
const bodyParser = require('body-parser');
const app = express()
app.use(bodyParser.json({limit: "10mb"}));
app.use(bodyParser.urlencoded({extended: true, limit: "1mb"}));

bodyParser一定要放在程序最前面,避免业务逻辑提前使用body数据。

(版权归cpury.com所有,转载请注明出处。)