Http 发送复杂对象GET vs POST

Http 发送复杂对象GET vs POST,http,asp.net-web-api,get,Http,Asp.net Web Api,Get,我想知道当一个复杂的对象只用于查找数据时,发送它的最佳方式是什么。我有一个网格,其中分页、过滤、排序等将在服务器端完成。所以我必须在每个请求中发送所有数据 public class DataConfiguratorDto { [Required] public Paging Paging { get; set; } public Sorting Sorting { get; set; } public IList<Filtering> Fliter

我想知道当一个复杂的对象只用于查找数据时,发送它的最佳方式是什么。我有一个网格,其中分页、过滤、排序等将在服务器端完成。所以我必须在每个请求中发送所有数据

public class DataConfiguratorDto
{
    [Required]
    public Paging Paging { get; set; }

    public Sorting Sorting { get; set; }

    public IList<Filtering> FlitersList { get; set; }
}

public enum FilterCondition
{
    Equals,
    Contains,
    MoreThan,
    LessThan,
}

public class Paging
{
    public int RowNumberStart { get; set; }

    [GreaterThan(nameof(RowNumberStart))]
    public int RowNumberEnd { get; set; }
}

public class Filtering
{
    [Required]
    public string ColumnName { get; set; }

    [Required]
    public object FilterValue { get; set; }

    [Required]
    public FilterCondition FilterCondition { get; set; }

    [Required]
    public FilterType FilterType { get; set; }
}

public class Sorting
{
    [Required]
    public SortOption SortOption;

    [Required]
    public string ColumnName { get; set; }
}

public enum SortOption
{
    Asc,
    Desc
}

public enum FilterType
{
    And,
    Or
}
公共类DataConfiguratorDto
{
[必需]
公共分页{get;set;}
公共排序{get;set;}
公共IList FlitersList{get;set;}
}
公共枚举筛选器条件
{
等于,
包含,
不止,
莱斯坦,
}
公共类分页
{
public int RowNumberStart{get;set;}
[GreaterThan(nameof(RowNumberStart))]
public int rownumberrend{get;set;}
}
公共类过滤
{
[必需]
公共字符串ColumnName{get;set;}
[必需]
公共对象筛选器值{get;set;}
[必需]
公共筛选器条件筛选器条件{get;set;}
[必需]
公共筛选器类型筛选器类型{get;set;}
}
公共类排序
{
[必需]
公共分类;
[必需]
公共字符串ColumnName{get;set;}
}
公共枚举排序
{
Asc,
描述
}
公共枚举筛选器类型
{
以及,
或
}
现在我可以使用POST,但它不是破坏了它的用途吗


执行此操作的最佳选项是什么?

您应该使用post,在正文中发送复杂对象(例如JSON)

根据W3.org

“GET方法意味着检索由请求URI标识的任何信息(以实体的形式)。”

“POST方法用于请求源服务器接受请求中包含的实体,作为请求行中请求URI标识的资源的新从属。”

有关更多信息,请参阅