javascript - 使用 sh 脚本在 URL 上发送带有指定查询参数的节点 js 服务器请求
问题描述
我现在对如何开始我当前的项目有点迷茫。我真的只是需要一些帮助才能让它开始,我应该能够从那里得到它。我对 JavaScript、php 和 mysql 有一些经验,但在 node js 中几乎没有。
我有一个看起来像这样的 .sh 脚本文件:
curl localhost:3000/signup?user=jack\&height=6\&time=0
curl localhost:3000/arm?left=0.000000\&right=0.000000\&time=0 --cookie "USER=jack"
curl localhost:3000/echo?dist=9.220000\&time=10 --cookie "USER=jack"
curl localhost:3000/line?l1=1\&l2=1\&l3=1\&time=20 --cookie "USER=jack"
curl localhost:3000/other?ir=0\&time=30 --cookie "USER=jack"
我想在 shell 中使用这些指定的查询参数发送我的节点 js 服务器请求,但我不知道该怎么做。到目前为止,这是我的节点 js 代码:
const { exec } = require('child_process');
var script = exec('myscript.sh' ,
(error, stout, stderr) => {
console.log(stdout);
console.log(stderr);
if ( error !== null ) {
console.log(`exec error: ${error}`);
}
});
var http = require('http');
var url = require('url');
http.createServer(function(req, res) {
var q = url.parse(req.url, true).query;
res.writeHead(200, {'Content-Type' : 'text/html'});
res.end("user " + q.first + " height " + q.second);
}).listen(3000);
当我转到 localhost:3000 时,我可以看到“用户未定义的高度未定义”,当我在命令行中键入“node file.js”时,我得到脚本开始在 linux 命令行中回显每一行......但是如何我把两者放在一起吗?我将如何解析脚本或使用该脚本将我需要的请求发送到我的节点 js 服务器?我真的不知道从哪里开始这个项目。简单地使用 php 和 mysql 会更容易吗?感谢您对此提供的任何帮助。谢谢。
解决方案
您必须等待您的 http 服务器,然后才能向它发出请求:
const http = require('http');
const url = require('url');
const { exec } = require('child_process');
// create http server
const server = http.createServer(function (req, res) {
// parse query parameter
var q = url.parse(req.url, true).query;
// write http header to client
res.writeHead(200, {
'Content-Type': 'text/html'
});
// send back body repsonse
res.end("user " + q.first + " height " + q.second);
});
// wait for the http server to start
server.on("listening", () => {
// do requests to the defined http server above
const script = exec('myscript.sh', (error, stout, stderr) => {
console.log(stdout);
console.log(stderr);
if (error) {
console.log(`exec error: ${error}`);
}
});
});
server.listen(3000);
不要忘记使您的 .sh 脚本可执行chmod +x myscript.sh
#!/bin/bash
curl "http://localhost:3000/signup?user=jack&height=6&time=0"
curl "http://localhost:3000/arm?left=0.000000&right=0.000000&time=0" --cookie "USER=jack"
curl "http://localhost:3000/echo?dist=9.220000&time=10" --cookie "USER=jack"
curl "http://localhost:3000/line?l1=1&l2=1&l3=1&time=20" --cookie "USER=jack"
curl "http://localhost:3000/other?ir=0&time=30" --cookie "USER=jack"
推荐阅读
- c# - unity如何在单击按钮时更改面板颜色
- python-2.7 - jmodelica 优化存在运行时错误
- javascript - 我正在尝试将一些 JSON 数据与 javascript 一起使用
- testing - 单击给定 XY 值的网页区域
- amazon-s3 - 如何将 s3 存储桶链接到 sagemaker 笔记本
- php - 检查php会话到期前的剩余时间
- vba - VBA Excel 在特定工作表的特定位置创建图表
- javascript - favlang 无法解析为 eclipse 中的变量
- php - codeigniter 未定义变量:finmasuk,如果它消失,数据表将不会显示
- sql - 基于两列从单行连接后需要两行