restful怎么接收参数(Restful服务中postputpatch的区别)

这几天用express mongoose来实现Restful api,get、post、put和delete都实现了,用postman调试也没问题,这时看到有patch这个方法上网查了一下,了解了post、put与patch之间的区别,这里做下简单的总结,今天小编就来聊一聊关于restful怎么接收参数?接下来我们就一起去研究一下吧!

restful怎么接收参数(Restful服务中postputpatch的区别)

restful怎么接收参数

这几天用express mongoose来实现Restful api,get、post、put和delete都实现了,用postman调试也没问题,这时看到有patch这个方法。上网查了一下,了解了post、put与patch之间的区别,这里做下简单的总结。

restful中四个基本的方法

POST = 新增

GET = 读取

PUT = 更新

DELETE = 刪除

HTTP的POST/PUT方法,这两个方法似乎都可以用来创建或更新一个资源。

区别是细微但清楚的:

POST方法用来创建一个子资源,如 /api/users,会在users下面创建一个user,如users/1

POST方法不是幂等的,多次执行,将导致多条相同的用户被创建(users/1,users/2 ...而这些用户除了自增长id外有着相同的数据,除非你的系统实现了额外的数据唯一性检查)

而PUT方法用来创建一个URI已知的资源,或对已知资源进行完全替换,比如users/1,

因此PUT方法一般会用来更新一个已知资源,除非在创建前,你完全知道自己要创建的对象的URI。

这里是PUT跟POST,那么PUT与PATCH呢,PUT可以理解为replace(create or update),例如put /user/1的意思是替换/user/1,如果user/1已经存在那么就替换,如果没有那么就创建。PUT必须包含/user/1的所有属性资料。

但是如果只是为了更新/user/1下的一个属性值,那么使用PUT就显得太过笨重,因为需要传入/user/1的所有属性值。这里就可以使用PATCH,用来做局部更新

下面是express实现的restful的代码,代码比较简单,只是表达下POST,PUT,PATCH这些api

POST

router.post('/users', function(req, res, next) {

var name = req.body.userName;

var password = req.body.password;

var resbody = { state: '' };

var md5 = crypto.createHash('md5');

var password = md5.update(password).digest('hex');

var user = new db.User({

name: name,

password: password

});

var check = finduser(db.User, { name: name });

if (check) {

resbody.state = 'fail';

res.send(resbody)

} else {

user.save(function(err, user) {

if (err) {

return console.log(err);

}

resbody.state = 'success';

res.send(resbody)

})

}

next();

})

PUT

//change user's password

router.put('/users/:id', function(req, res, next) {

if (req.body.id) {

var obj = {

name: req.body.name,

password: req.body.password

}

db.User.findByIdAndUpdate(req.body.id, obj).exec();

} else {

var newUser = new db.User({

name: req.body.name,

password: req.body.password

})

newUser.save(function(err) {

if (err) return console.log(err)

})

}

res.send('OK')

})

PATCH

//change user's password

router.put('/users/:id', function(req, res, next) {

var id = req.params.id,

password = req.body.updatepassword;

db.User.findOneAndUpdate({ id: name }, { $set: { password: password } }, function(err) {

if (err) {

console.log(err)

}

res.send('update success');

});

})

最后,放上URI的区别URL

关于URI和URL:

URI—Universal Resource Identifier通用资源标志符

Web上可用的每种资源如HTML文档、图像、视频片段、程序等都是一个来URI来定位的

URI一般由三部组成

①访问资源的命名机制

②存放资源的主机名

③资源自身的名称,由路径表示,着重强调于资源。

URL—Uniform Resource Location统一资源定位符

URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上,特别是著名的Mosaic。

采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。

URL一般由三部组成

①协议(或称为服务方式)

②存有该资源的主机IP地址(有时也包括端口号)

③主机资源的具体地址。如目录和文件名等

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页