【问题标题】: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 没有也不应该使用会话..

标签: wcf rest restful-architecture


【解决方案1】:

已经有帖子和问题了,我总结一下

  1. POST 动词用于创建新资源(在您的情况下为文件)并且重复操作会在服务器上创建多个资源。如果多次上传同名文件会在服务器上创建多个文件,则此谓词会有意义。

    PUT 动词用于更新现有资源或创建具有预定义 ID 的新资源。多个操作将重新创建或更新服务器上的相同资源。如果第二次、第三次上传同名文件会覆盖之前上传的文件,这个动词就有意义了。

  2. POST 每次您修改服务器上的某些状态(如数据库更新、删除)时。 GET 用于只读获取,例如数据库选择。

  3. 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 它将输入作为字符串并返回格式化的输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      • 2012-09-22
      • 1970-01-01
      • 1970-01-01
      • 2015-12-05
      • 2012-12-23
      相关资源
      最近更新 更多