Le projet veut utiliser le nœud comme couche intermédiaire.
Le navigateur de la première couche envoie une requête au nœud.
Le nœud de la deuxième couche envoie une requête à php.
Je connais un peu le nœud et le framework express. demander à php d'obtenir les données et de les renvoyer à la réception ? Existe-t-il une méthode simple et facile à comprendre.
Je peux obtenir les données après avoir utilisé http-proxy-middleware
, mais je souhaite faire correspondre l'itinéraire, puis envoyer la demande en arrière-plan pour restituer le modèle ejs.
const apiProxy = proxy('/do', { target: 'http://wx.lxjjz.cn',changeOrigin: true });//将服务器代理到localhost:8080端口上[本地服务器为localhost:3000]
app.use('*', apiProxy);//子目录下的都是用代理
app.get('/index', function(req,res){
//我想在这里匹配到路由,然后在这里发送请求拿数据
//然后根据返回的数据传送到ejs模版渲染
res.sendFile(__dirname+'/index.html');
});
Client
var contextPath = 'http://wx.lxjjz.cn';
$.ajax({
type:'get',
url:contextPath+'/do?g=api&m=hd&a=works-list',
success:function(data){
console.log(data);
},
error:function(data){
console.log(data);
}
})
Node dispose de diverses bibliothèques de requêtes. Il y a aussi des demandes qui vont avec
L'ensemble du processus est probablement
Le client demande le serveur de nœuds
Le serveur de nœud demande php puis conditionne les données de réponse renvoyées
Renvoyer les données packagées ci-dessus au client
Ce à quoi vous devez faire attention, c'est à la gestion du rappel. Si vous voulez avoir une meilleure apparence, vous pouvez utiliser le module promise ou co pour gérer le code asynchrone.
Il existe différentes solutions à cela, permettez-moi juste de parler de celle que nous utilisons
node-rest-client
比如使用express,自己写个路由,如果
/ajax
Elle est utilisée pour accepter les requêtes frontalesToutes les requêtes frontales sont envoyées à /ajax, puis dans /ajax, utilisez node-rest- client pour transmettre la demande à php, une fois que php a renvoyé les données, res.json(data) suffit
Bien sûr, vous devez encapsuler et unifier les données vous-même pendant ce processus. C'est une question triviale. comme ça
http-proxy-middleware
S'il s'agit simplement d'un transfert par proxy,
Si la couche intermédiaire n'encapsule aucune donnée, vous pouvez utiliser ce middleware :
https://github.com/chimurai/h...
Normalement, les nœuds sont utilisés pour l'encapsulation des données. La couche API ne se soucie pas du business, elle peut donc être découplée
.Ensuite, vous devez créer différentes interfaces séparément, récupérer les données, les réorganiser vous-même à l'aide de lodash et moment, et les envoyer à la réception,