http.request请求及在node中post请求参数解析

本文介绍如何使用Node.js实现POST请求,并演示了如何在服务端解析POST请求参数。通过示例代码展示了如何设置请求头、构造请求数据以及如何创建HTTP服务器来接收并处理这些请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

Post请求

var http=require('http');
var qs=require('querystring');
 
var post_data={a:123,time:new Date().getTime()};//这是需要提交的数据
var content=qs.stringify(post_data);
 
var options = {
  host: '127.0.0.1',
  port: 8080,
  path: '/admin',
  method: 'POST',
  headers:{
  'Content-Type':'application/x-www-form-urlencoded',//post请求需要设置的type值
  'Content-Length':content.length
  }
};
console.log("post options:\n",options);
console.log("content:",content);
console.log("\n");
 var a=''
var req = http.request(options, function(res) {
  console.log("statusCode: ", res.statusCode);
  console.log("headers: ", res.headers);
  var _data='';
  res.on('data', function(chunk){
     _data += chunk;
     a=chunk;
  });
  res.on('end', function(){
     console.log("\n--->>\nresult:",_data)
   });
});
 
req.write(content);
req.end();

http.createServer(function (request, response) {  
  
    // 发送 HTTP 头部   
    // HTTP 状态值: 200 : OK  
    // 内容类型: text/plain  
    response.writeHead(200, {'Content-Type': 'text/plain'});  
  	response.write(a)
    // 发送响应数据 "Hello World"  
    response.end('Hello World\n');  
}).listen(8888);  

  在服务中解析Post请求参数

var express=require('express');
var app=express();
var bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({ extended: false }));
app.post('/admin',(req,res)=>{
	console.log(req)
	var data={
		code:200,
		msg:'success'
	}
	res.json(data);
})

app.listen(8080,()=>{

	console.log(8080)
})

  

转载于:https://www.cnblogs.com/yiyi17/p/8577106.html

在 TypeScript 中发起 HTTP 请求通常会结合 Node.js 的 `http` 或者 `https` 模块来进行操作。下面是一个使用 Node.js 原生模块的简单示例: ```typescript import http from "http"; import https from "https"; // 定义 requestPromise 函数封装请求逻辑,并返回 Promise function requestPromise(options: any): Promise<string> { return new Promise((resolve, reject) => { const protocol = options.protocol === 'https:' ? https : http; // 发起请求 const req = protocol.request(options, (res) => { let data = ''; // 监听数据流并拼接起来 res.on('data', (chunk) => { data += chunk; }); // 当所有数据接收完毕解析结果 res.on('end', () => { resolve(data); }); }); // 如果发生错误则抛出异常信息 req.on("error", (e) => { console.error(`请求遇到问题: ${e.message}`); reject(e); }); // 结束请求发送内容到服务器(如果有) if (options.body) { req.write(JSON.stringify(options.body)); } req.end(); }); } (async function() { try { const requestOptions = { hostname: 'jsonplaceholder.typicode.com', port: 443, path: '/posts/1', method: 'GET', headers: { 'Content-Type': 'application/json' }, protocol: 'https:' }; const response = await requestPromise(requestOptions); console.log(response); } catch(error) { console.error('捕获了错误:', error); } })(); ``` ### 解析 1. **协议选择**:通过检查传入 URL 协议字段 (`protocol`) 来判断是否应使用 HTTPS 还是 HTTP。 2. **事件监听**:我们对响应进行监听,将分段的数据合并成完整的字符串形式。 3. **错误处理**:无论是网络故障还是其他情况引发的问题均能被捕获。 #### 注意事项 - 上述例子展示了 GET 和 POST 等基本方法如何构建;实际项目里可以进一步优化此函数支持更多场景下的配置需求如超时设置、代理等特性。 - 对于大型应用推荐直接引入 Axios 库代替手写这类功能因为其更稳定且易用性强。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值