Nodejs 发起http请求(客户端 get post put delete)

Nodejs本身自带的http模块可以支持get和post 操作,但没有找到put操作。
本文档使用的是request模块实现。主要用于测restfulAPI客户端使用。


request模块文档:https://www.npmjs.com/package/request
使用前请引入request模块

1 HTTP方法的基本概念

Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,增,改,删4个操作。

2 GET

从服务器取出资源(一项或多项)
GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连

如果要在query部分带参数 (包括PUT POST DELETE)
如:

http://www.helloworld.com/messages/topic3?/messages/topic3?cmd=event&uid=A15C2DB&img=1

均需要使用qs模块进行处理:

const qs = require('querystring');
let options = {
    url: 'http://www.helloworld.com/messages/topic3?' + qs.stringify({cmd: "event",uid:"A15C2DB", img:1})
};

nodejs code:

var request = require("request");
var options = {
    url:'http://www.baidu.com'
    // url: 'https://api.some-server.com/',
    // agentOptions: {
    //     cert: fs.readFileSync(certFile),
    //     key: fs.readFileSync(keyFile),
    //     passphrase: 'password',
    //     securityOptions: 'SSL_OP_NO_SSLv3'
    // }
};

request.get(options, function(err, response, body){
    console.info(response.body);
});

3 POST

在服务器新建一个资源。
POST把提交的数据则放置在是HTTP包的包体中。
nodejs code:

 var request = require("request");
 var options = {
        url: url,
       	qs : {//query
       		id: 20190929T060801Z
        },
        headers:{
            device:"asdfasdfaadfasdf"
        },//req.headers
        form: {// form-data
            deviceid:"xxxxxxx",
            handle:"12331242134",
            name:"Cindy_Crawford_0002.jpg",
            filepath:"http://xxxxxxxx.us-east-1.amazonaws.com/jwli/001.jpg"
        }  //req.body
        // body: filedata   // bin data
    };

    request.post(options, function(error, response, body) {
        console.info('response:' + JSON.stringify(response));
        console.info("statusCode:" + response.statusCode)
        console.info('body: ' + body );
    });

4 PUT

在服务器更新资源(客户端提供改变后的完整资源)
nodejs code:

   var request = require("request");
   var options = {
        url: 'http://xxxxxxxx.s3.us-east-1.amazonaws.com' +s3_path,// ,
        headers: { 
            host: 'jwlipirtest.s3.amazonaws.com', 
            'x-amz-content-sha256':'UNSIGNED-PAYLOAD',
            'x-amz-date':date,
            Authorization: result
        },
        body:bitmap
    };

    request.put(options, function(error, response, body) {
        console.info('response:' + JSON.stringify(response));
        console.info("statusCode:" + response.statusCode)
        console.info('body: ' + body );
    });

5 Delete

从服务器删除资源。
nodejs code:

var request = require("request");

var options = {
    url:'http://172.28.28.4:3017/files/testhttp',
	headers:{
		uid:"xxxxxxxx"
	},
	form:{
		target:"/user/one"
	}//req.body
};

request.del(options, function(err, response, body){
    console.info(response.body);
});

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node.js是一个基于Chrome V8引擎的JavaScript运行环境,可用于开发服务端应用程序。Axios是一个基于Promise的HTTP客户端,用于发送HTTP请求。Axios支持浏览器和Node.js环境。 在Node.js中使用Axios发送HTTP请求,可以通过以下步骤实现: 1. 安装Axios 可以通过npm命令安装Axios: ``` npm install axios ``` 2. 发送HTTP请求 可以使用Axios的get、post、put、delete等方法发送HTTP请求。例如: ``` const axios = require('axios'); axios.get('http://localhost:3000/api/user') .then(response => { console.log(response.data); }) .catch(error => { console.log(error); }); ``` 3. 添加请求拦截器 可以通过Axios的interceptors属性添加请求拦截器。拦截器可以在发送请求前对请求进行处理。例如,可以在请求头中添加token等信息: ``` axios.interceptors.request.use( config => { const token = localStorage.getItem('token'); if (token) { config.headers.Authorization = `Bearer ${token}`; } return config; }, error => { return Promise.reject(error); } ); ``` 4. 添加响应拦截器 可以通过Axios的interceptors属性添加响应拦截器。拦截器可以在接收到响应后对响应进行处理。例如,可以在响应中检查是否需要跳转到登录页面: ``` axios.interceptors.response.use( response => { return response; }, error => { if (error.response.status === 401) { // 跳转到登录页面 window.location.href = '/login'; } return Promise.reject(error); } ); ``` 以上是使用Axios发送HTTP请求及添加拦截器的基本步骤。在实际应用中,还需要考虑请求的参数、响应的处理等方面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值