使用Bmob的Restful API发起http请求,可以直接和Bmob数据库进行交互,达到增删改查的目的,这是bmob官网Restful API的教程,但是官网的教程是通用的格式,并不是针对JS语言的,如何使用Javascript语言调用http请求,与bmob的数据库交互,是今天要写的内容,这里简要总结一下。
首先,为了获取http请求,一般使用NodeJS自带的http库或request库,request库是对http库的一个封装,更简单,功能也更丰富,所以我们在model的数据库交互文件中,首先要引入request库。具体如下:
var request=require("request");
为了验证http请求的有效性,我们可以装一个chrome的插件,叫做Postman,可以模拟http请求的功能,并且返回信息。用它来验证http请求是否可行。
request发起restful请求的格式如下:
1 2 3 4 5 6 7 8 9 10 11 |
request(options, function(error, response, body){ if (!error && response.statusCode == 200) { console.log(response.body+" success!"); //请求成功的操作 }else{ console.log(error+" failed!"); //请求不成功的操作 } }); |
其中,options是我们的请求内容,包括请求头headers,请求方式method,请求地址url,请求内容body,这就是bmob的restful文档里写的那东西,我们可以把它全部写道一个叫做option的Json里。不同的要求下options的要求不一样,这里我列一下:
1.删除操作
bmob数据库写法
:https://docs.bmob.cn/data/Restful/b_developdoc/doc/index.html#删除数据
Js写法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<br /> if(obj=="bmobUser"){ queryurl='https://api.bmob.cn/1/users/'+encodeURI(targetId); }else{ queryurl='https://api.bmob.cn/1/classes/'+obj+'/'+encodeURI(targetId); } var options = { url: queryurl, method:"DELETE", headers: { "X-Bmob-Application-Id": "*******************************", "X-Bmob-REST-API-Key": "*******************************", }, }; |
2.批量操作(这里是批量删除,其他也一样)
bmob数据库写法
:https://docs.bmob.cn/data/Restful/b_developdoc/doc/index.html#批量数据操作
Js写法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<br /> for ( var i = 0,l = idsArr.length; i < l; i++ ){ targetId = idsArr[i]; requestArray[i]={ "method": "DELETE", "path": "/1/classes/"+obj+'/'+encodeURI(targetId), } } var requests = { "requests":requestArray } //console.log(JSON.stringify(requests)) options = { url: " https://api.bmob.cn/1/batch", method:"POST", headers: { "X-Bmob-Application-Id": "*******************************", "X-Bmob-REST-API-Key": "*******************************", "Content-Type": "application/json", }, body:JSON.stringify(requests), }; |
这里要注意,body中的内容全部要用JSON.stringify()转为json的格式,不然调用会出错,而body对应的其实是bmob给的格式中-d后面对应的内容。
3.查找单个目标
bmob数据库写法
:https://docs.bmob.cn/data/Restful/b_developdoc/doc/index.html#查询单条数据
Js写法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<br /> if(obj=="bmobUser"){ queryurl='https://api.bmob.cn/1/users/'+encodeURI(targetId); }else{ queryurl='https://api.bmob.cn/1/classes/'+obj+'/'+encodeURI(targetId); } var options = { url: queryurl, method:"GET", headers: { "X-Bmob-Application-Id": "*******************************", "X-Bmob-REST-API-Key": "*******************************", }, }; |
4.修改操作
bmob数据库写法
:https://docs.bmob.cn/data/Restful/b_developdoc/doc/index.html#更新数据
Js写法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<br /> updatemessage = { "occupied" : Boolean(req.body.occupied), "username" : req.body.username, "profession" : req.body.profession, "studentid" : req.body.studentid, "status" : req.body.status, "school" : req.body.school, "gender" : req.body.gender, "faculty" : req.body.faculty, }; console.log(JSON.stringify(req.body)); queryurl='https://api.bmob.cn/1/classes/'+obj+'/'+encodeURI(targetId); var options = { url: queryurl, method:"PUT", headers: { "X-Bmob-Application-Id": "*******************************", "X-Bmob-REST-API-Key": "*******************************", "X-Bmob-Master-Key":"*******************************", "Content-Type": "application/json", }, body:JSON.stringify(updatemessage), }; |
5.增加数据操作
bmob数据库写法
:https://docs.bmob.cn/data/Restful/b_developdoc/doc/index.html#添加数据
Js写法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<br /> updatemessage = { "occupied" : Boolean(req.body.occupied), "username" : req.body.username, "profession" : req.body.profession, "studentid" : req.body.studentid, "status" : req.body.status, "school" : req.body.school, "gender" : req.body.gender, "faculty" : req.body.faculty, }; queryurl='https://api.bmob.cn/1/classes/'+obj; var options = { url: queryurl, method:"POST", headers: { "X-Bmob-Application-Id": "*******************************", "X-Bmob-REST-API-Key": "*******************************", "Content-Type": "application/json", }, body:JSON.stringify(updatemessage), }; |
6.查询操作
bmob数据库写法
:https://docs.bmob.cn/data/Restful/b_developdoc/doc/index.html#查询多条数据
Js写法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<br /> if(obj=="bmobUser"){//user类的query用这个格式 queryurl = 'https://api.bmob.cn/1/users'; }else{ queryurl = 'https://api.bmob.cn/1/classes/'+obj; } if(querystring){//判断是否传递了关键词 queryurl = queryurl+'?where='+encodeURI(JSON.stringify(querystring)); } var options = { url: queryurl, method:"GET", headers: { "X-Bmob-Application-Id": "*******************************", "X-Bmob-REST-API-Key": "*******************************", }, }; |