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);
});