使用对象参数调用 Get 方法 .NET core

问题描述 投票:0回答:2

我正在 React 中开发一个仪表板,它调用后端 API 从数据库中获取所有食谱。所以搜索条件会很大。需要将许多过滤器属性传递到后端才能获得正确的食谱。

作为下面的示例,我为搜索参数定义了一个类

public class SearchParams
{
    public string TemplateName { get; set; } = "";
    public DateTime DateFrom { get; set; }
    public DateTime DateTo { get; set; }
    public String CreatedBy { get; set; } = "";
    public Guid Id { get; set; }

}

因此需要 GET 方法来处理提供的任何参数,从而相应地从数据库中获取相应的食谱。

但是由于 GET 请求不支持接受参数作为 OBJECT (抱歉,如果我错了),我考虑尝试使用 POST。但是使用 POST 进行搜索功能感觉有点混乱。

那么使用 GET 方法我是否需要像这样定义所有参数

[HttpGet]
public IEnumerable<Recipes> Get(string TemplateName,DateTime DateFrom....)
{
    return new string[] { "value1", "value2" };
}

或者有什么最好的方法吗?

请注意,我的真实搜索条件包括除上面类定义中的属性之外的许多属性。

c# asp.net-core asp.net-web-api asp.net-core-webapi
2个回答
1
投票

没有什么可以阻止您使用 SearchParams 作为输入参数

[HttpGet]
public IEnumerable<Recipes> Search(SearchParams par)

唯一的问题是 Get 不包含主体,因此所有数据都应包含在查询字符串中

.../search?TemplateName=TemplateName&CreatedBy=....

0
投票

你可以尝试[FromQuery]吗

[HttpGet] 公共 IEnumerable 搜索([FromQuery] SearchParams par)

© www.soinside.com 2019 - 2024. All rights reserved.