get post put delete
get:获取资源 幂等
post:执行不安全和非幂等操作(幂等:多次请求于一次请求的效果一样)
put:更新资源 幂等
delete:删除资源 幂等
如何理解幂等:
public book
{
private Price price;
public setprice(Price price)
{
this.price = price
}
}
举例说明:
“用户”作为资源
get:获取用户信息
post:创建新用户
put:修改用户信息
delete:删除用户
对于需要计算或者处理函数的情况,可以将计算过程或者处理函数本身作为资源,使用get方法来处理
比如:验证用户名,密码是否有效,把验证函数本身作为资源
get /validuser/5195 http 1.1
content-type application/json
{"result":true}
这个过程本身是安全和幂等的,也是get最擅长的
以此类推,判断手机号,判断用户名是否被占用,等等。。。
restful web 的地址uri 好像和我目前设计的不一样
每个uri都体现了他的基本功能
比如 getuserinfo 都知道是获取用户信息
比如 /user/getuserinfo/5195 获取5195的用户信息(我目前的做法)
而restful web 的uri 也要体现这一点
比如:
post
/user/5195/updatename //修改5195的姓名
不建议同一uri,使用不同的参数区分不同的操作
比如:
post /user/5195
type=add
post /user/5195
type=update
restful web 对错误的处理
无论是客户端提交请求导致的错误还是服务端的运行错误,都应该返回一个对错误的描述,包含错误状态码和对错误信息的描述。
常见的错误用法一般是返回200,和一堆错误描述信息。
这样可能导致对于客户端需要缓存数据的情况,如果返回200,客户端会正常缓存数据,但最终缓存的数据是错误的,导致脏数据的产生。
而对于需要分析数据的情况来说,客户端可能会向服务端提交错误报告,就可以把状态码提交过去,而服务端也会根据状态码对出错代码快速定位。
由客户端原因导致的错误,状态码在400——417
由服务器端原因导致的错误,状态码在500——505
如果返回的状态码是不常见的,比如499,599,就直接按400,500处理
get post put delete的更多相关文章
- 如何区别数据库删除语句drop与delete与truncate?
1.delete:删除数据表中的行(可以删除某一行,也可以在不删除数据表的情况下删除所有行) 删除某一行:delete from 数据表名称 where 列名称=值: 删除所有行:delete*fro ...
- 数据库设计中的Soft Delete模式
最近几天有点忙,所以我们今天来一篇短的,简单地介绍一下数据库设计中的一种模式——Soft Delete. 可以说,该模式毁誉参半,甚至有非常多的人认为该模式是一个Anti-Pattern.因此在本篇文 ...
- 关于JavaScript中的delete操作
关于JavaScript中的delete操作 看到一道题,是这样的: (function(x){ delete x; return x; })(1); 1 null undefined Error 我 ...
- Git异常:Cannot delete the branch 'test1' which you are currently on
GitHub实战系列汇总:http://www.cnblogs.com/dunitian/p/5038719.html ———————————————————————————————————————— ...
- HTTP Method详细解读(`GET` `HEAD` `POST` `OPTIONS` `PUT` `DELETE` `TRACE` `CONNECT`)
前言 HTTP Method的历史: HTTP 0.9 这个版本只有GET方法 HTTP 1.0 这个版本有GET HEAD POST这三个方法 HTTP 1.1 这个版本是当前版本,包含GET HE ...
- IIS7.5上的REST服务的Put,Delete操作发生HTTP Error 405.0 - Method Not Allowed 解决方法
WebDAV 是超文本传输协议 (HTTP) 的一组扩展,为 Internet 上计算机之间的编辑和文件管理提供了标准.利用这个协议用户可以通过Web进行远程的基本文件操作,如拷贝.移动.删除等.在I ...
- ASP.NET Core 中文文档 第二章 指南(4.10)检查自动生成的Detail方法和Delete方法
原文 Examining the Details and Delete methods 作者 Rick Anderson 翻译 谢炀(Kiler) 校对 许登洋(Seay).姚阿勇(Mr.Yao) 打 ...
- new/delete重载
在c++中,有时我们需要在运行阶段为一个变量分配未命名的内存,并使用指针来访问它,这里就可以用到new关键字.另外需要指出的是,new分配的内存块通常与常规变量分配的内存块不同,常规变量的值都储存在被 ...
- EC笔记:第三部分:16成对使用new和delete
我们都知道,申请的资源,使用完毕后要释放.但是这个释放动作,一定要注意. 举个例子,很多人动态分配的资源,在使用之后,往往直接调用了delete,而不管申请资源的时候用的是new还是new[]. 如下 ...
- Spring boot: Request method 'DELETE' not supported, Request method 'PUT' not supported, Request method 'POST' not supported
GET,POST,PUT,DELETE, Spring都支持,不要怀疑Spring, 一定是前端发送的rest 请求和后端的响应不匹配, 查找原因以及解决办法, 很简单 用chrome打开F12控制台 ...
随机推荐
- hpp文件简介
Boost库文件采用的.hpp的后缀,而不是分成两个文件,也就是”.h+.cpp”,之所以这样做是有理由的,首先就是与普通的C/C++头文件区分,另外一个原因就是使Boost库不需要预先编译,直接引用 ...
- P1919 【模板】A*B Problem升级版(FFT快速傅里叶)
题目描述 给出两个n位10进制整数x和y,你需要计算x*y. 输入输出格式 输入格式: 第一行一个正整数n. 第二行描述一个位数为n的正整数x. 第三行描述一个位数为n的正整数y. 输出格式: 输出一 ...
- 深入理解sudo
[root@cairui ~]# cat /etc/sudoers ## Sudoers allows particular users to run various commands as ## t ...
- 改变input[type=file]的默认样式
自定义上传按钮样式的终极解决方案--input透明法 <style> .div1{ float: left; height: 41px; background: #f5696c; widt ...
- cheerio制作markDown索引目录
原文地址:cheerio制作markDown索引目录 制作目录索引这种东西当然是放在前端方便.选择放在后端一是为了了解Node后端生态,掌握更多后端技术:二是因为公司实行前后端分离的方式开发,睾贵的J ...
- 第k大数(前k大数)
题目:设计一组N个数,确定其中第k个最大值 1,普通方法(先排序,然后遍历,得到第k大的数) 注:如果是数组,直接arr[k],我们可以对这个乱序数组按照从大到小先行排序,然后取出前k大,总 ...
- Spring 配置RMI远程调用
项目中遇到了跨系统调用,当初想的是用webservice或者是hessian.但是这个接口用到的并不多,而且是一个非常简单的方法.所有便想到了RMI.在spring中 实现RMI非常简单. 暴露服务: ...
- SQL Server 数据导入与导出
1. BCP 命令 用法: bcp {dbtable | query} {in | out | queryout | format} 数据文件 [-m 最大错误数] [-f 格式化文件] [-e 错误 ...
- 通过.net core源码看下Dictionary的实现
https://blog.csdn.net/narlon/article/details/80755386 .net core的代码位置 https://github.com/dotnet/c ...
- java——数据结构
底层数据结构: 数组 ArrayList 链表 LinkedList 应用数据结构: 二分搜索树 BST 最大堆/最小堆 MaxHeap/MinHeap 线段树 SegmentTree 字典树 Tri ...