gpt4 book ai didi

C# - 使用 Refit 的 Web Api 传递对象

转载 作者:行者123 更新时间:2023-12-04 07:43:20 27 4
gpt4 key购买 nike

大家好
我目前在 Xamarin 工作并被基本操作所困扰。我正在尝试使用 Refit 从 Xamarin 调用我的 NetCore Web API。
主要问题是 - 我猜 - 我想在调用参数中传递对象。第二个问题可能是该对象具有枚举列表作为属性。
型号:

public class ArticleFilter
{
public List<ArticleType> Types { get; set; }

public int? CarBrandId { get; set; }
}

public enum ArticleType
{
News = 1,
SpecialOffer = 2,
Service = 3,
}
retrofit 接口(interface):
[Headers("Content-Type: application/json")]
public interface IArticleApi
{
[Get("/api/articles")]
[Headers("Content - Type: application / json")]
Task<List<Article>> GetAll(ArticleFilter filter);

[Get("/api/articles/{id}")]
Task<ArticleDetail> GetOne(int id);
}
API Controller :
    [HttpGet]
public async Task<IActionResult> GetAll([FromUri] ArticleFilterDto filter)
{
var articles = await _articleSectionService.GetAll(filter);

if (articles == null)
{
return NotFound();
}

return Ok(articles);
}
postman 电话:
enter image description here
来自 Xamarin View 模型的测试调用:
var filter = new ArticleFilter()
{
Types = new List<ArticleType> { ArticleType.News }
};

var test = new List<Article>();
test = await response.GetAll(filter);
实际上这个属于异常(exception) - 415 - 不支持的媒体类型
我遇到了他们的 GitHub 文档,但仍然没有进展。请问有超人能帮帮我吗?

最佳答案

终于解决了
以防万一有人遇到同样的情况。在我的情况下,将接口(interface)中的 [Body]/[FromUri] 更改为 [Query] 和 Controller 方法中的 [FromQuery] 解决了我的问题。

[Headers("Content-Type: application/json")]
public interface IArticleApi
{
[Get("/api/articles/")]
Task<List<Article>> GetAll([Query]ArticleFilterDto filter);
}

[HttpGet]
public async Task<IActionResult> GetAll([FromQuery]ArticleFilterDto filter)
{
var articles = await _articleSectionService.GetAll(filter);

if (articles == null)
{
return NotFound();
}

return Ok(articles);
}

关于C# - 使用 Refit 的 Web Api 传递对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67330071/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com