.net webapi HttpGet与HttpPost。为什么使用HttpGet?

ncu*_*ica 3 ajax jquery asp.net-web-api

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

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

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

(2000个字符(IE的限制。)) GET请求的长度是否有限制?

当我有时编码大量数据时,我很沮丧地无法通过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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

那么,为什么会是一个很好的理由,当有人想使用GET而不是POST,而POST始终与所有任何限制工作。

我只在谈论WEB API .net。我知道您是否想通过url字符串(逐页发送)或类似GET的请求变量和信息,可以更轻松地实现。

Joa*_*rks 5

最终,您总是可以做任何您想做的事,但是遵循一些标准是一个好习惯-不仅是出于标准的考虑,而且是使代码可预测且易于使用。

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

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

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

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

  • DELETE会删除资源

这使每个人的生活更加轻松,并且就像您和客户之间的合同。

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

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