RESTful - 我啥时候应该使用 POST 和 GET?
Posted
技术标签:
【中文标题】RESTful - 我啥时候应该使用 POST 和 GET?【英文标题】:RESTful - when should I use POST and GET?RESTful - 我什么时候应该使用 POST 和 GET? 【发布时间】:2014-01-19 19:03:11 【问题描述】:这是我的 WCF 服务,用户可以在其中找到他的消息。 简单:
[OperationContract]
[WebGet(UriTemplate = "/GetMessages/UserGLKNumber/UserPassword/SessionToken")]
Messages GetMessages(string SessionToken, string UserPassword, string UserGLKNumber);
我对那条线有顾虑:UserGLKNumber/UserPassword/SessionToken
我必须先验证用户身份,然后才能收到该消息。但是使用GET
方法,我无法发送对象,例如POST
。
是否与 REST 模式一致?
请解开我的疑惑。
【问题讨论】:
在 URL 中传递用户密码既奇怪又不安全。我不会推荐这个。如果您有会话令牌,则应在此调用之前完成身份验证。还应考虑 HTTP 身份验证。 REST 没有也不应该使用会话.. 【参考方案1】:已经有帖子和问题了,我总结一下
POST 动词用于创建新资源(在您的情况下为文件)并且重复操作会在服务器上创建多个资源。如果多次上传同名文件会在服务器上创建多个文件,则此谓词会有意义。
PUT 动词用于更新现有资源或创建具有预定义 ID 的新资源。多个操作将重新创建或更新服务器上的相同资源。如果第二次、第三次上传同名文件会覆盖之前上传的文件,这个动词就有意义了。
POST 每次您修改服务器上的某些状态(如数据库更新、删除)时。 GET 用于只读获取,例如数据库选择。
GET:获取条目集合(作为提要文档)或单个条目(作为条目文档)。
POST:从条目文档创建一个新条目。
PUT:使用条目文档更新现有条目。
DELETE:删除条目。
来源:Difference between PUT and POST using WCF REST
另一个有用的阅读是:
What's the difference between a POST and a PUT HTTP REQUEST?
http://www.codeproject.com/Articles/105273/Create-RESTful-WCF-Service-API-Step-By-Step-Guide
http://msdn.microsoft.com/en-us/magazine/dd315413.aspx
http://social.msdn.microsoft.com/Forums/vstudio/en-US/643e0d8b-80bb-45eb-8a84-318ac8de4497/difference-between-the-rest-verbs-put-and-post?forum=wcf
【讨论】:
【参考方案2】:就 Restful 服务而言...
发布: 1. 在应用程序中使用而不是在获取中使用它是安全的。 2. 没有配置代理服务器。 3. 受Web服务器限制的大数据长度。 4. 浏览器没有缓存。 5. 输入为xml
获取: 1. 在应用程序中使用而不是在获取中使用它是不安全的。 2. 配置代理服务器。 3. 使用url编码技术。 4. 缓存在浏览器中。 5. 如果您不声明任何人,则它是默认值。 6 它将输入作为字符串并返回格式化的输出。
【讨论】:
以上是关于RESTful - 我啥时候应该使用 POST 和 GET?的主要内容,如果未能解决你的问题,请参考以下文章