【问题标题】:.net webapi HttpGet vs HttpPost. why HttpGet?.net webapi HttpGet 与 HttpPost。为什么是 HttpGet?
【发布时间】:2013-05-29 21:52:02
【问题描述】:

为什么在 WebApi 框架中使用 HttpGet 而不是 HttpPost?

我很了解 Post 或 Get 类型之间的区别,一种是通过 url,另一种不是(作为基本理解)

但我也知道主要区别(可以在服务器上编辑)是 Post 对发送到服务器的数据大小没有任何限制,而 GET 类型有一个限制

(2000 个字符(IE 的限制。)) Is there a limit to the length of a GET request?

当我对大量数据进行编码时,有时我对通过 GET 发送超过限制数据大小的数据感到沮丧,并发现服务器发送错误和错误是因为大小,所以我必须改变我的方法有利于POST 类型。

namespace somenamespace.Controllers
{
    public class someController : ApiController
    {
        [HttpPost] //<--- change all
        public somenamespace.Class getSomething(string key1, string key2) {
            return new someblabla.Models.Class.Class(key1,key2).getSomething();
        }
    }
}

那么,当有人想要使用 GET 而不是 POST 时,为什么会是一个好的理由,而 POST 却始终不受任何限制。

我说的只是 WEB API .net。我知道您是否想通过 url 字符串(通过页面发送到页面)或类似 GET 的方式来请求变量和信息,这样更容易实现。

【问题讨论】:

  • 您可能需要搜索一下什么是 REST 服务,因为 GET 和 POST 的用途完全不同。基本上,GET 用于从您的服务中检索数据,而 POST 用于将数据发送到您的服务。
  • HttpPost 通常也不会被浏览器的 AJAX 缓存。如果需要,通过使用 GET,您的请求对缓存更加友好。
  • @Newbo.O 好吧,虽然这是真的,但它们都可以毫无区别地工作,都可以用于检索数据,唯一的区别是它们如何通过网络传输,但这是一种“哲学”假设而不是技术决定。而 vcsjones 则指向一个更真实的场景。

标签: jquery ajax asp.net-web-api


【解决方案1】:

最终,您始终可以随心所欲,但遵循一些标准是一种很好的做法 - 不仅仅是为了标准,而是为了让您的代码可预测且易于使用。

当你调用你的 API RESTful 时,人们会假设,例如:

  • 任何 GET 请求都只会获取数据 - 不修改、不删除、不创建

  • 任何 POST 请求都会创建一个资源

  • PUT 请求将更新资源,您可以根据需要多次执行它们而不会产生副作用

  • DELETE 将删除资源

这让每个人的生活都变得更轻松,并且在某种程度上是您和您的客户之间的合同。

我强烈建议您阅读有关 API 的 RESTful 设计的资源 - 您将了解人们遵循约定的原因:

http://info.apigee.com/Portals/62317/docs/web%20api.pdf

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-06
    • 2021-07-29
    • 1970-01-01
    • 2011-11-06
    相关资源
    最近更新 更多