gpt4 book ai didi

c# - 具有自定义端点名称的 WEB API .NET 操作

转载 作者:太空狗 更新时间:2023-10-30 00:30:08 25 4
gpt4 key购买 nike

所以我已经在 .NET 中设置了一个后端,并且基本的 HTTP 调用可以正常工作。现在我需要一种替代方法,它不会按 ID 而是按属性进行搜索,因此我想在最后使用不同的属性进行 REST 调用。

这是我的 Controller 的两种方法:

public IHttpActionResult GetCategory(int id)
{
var category = _productService.GetCategoryById(id);

if (category == null) return NotFound();
var dto = CategoryToDto(category);
return Ok(dto);
}


public IHttpActionResult GetCategoryByName(string name)
{
var category = _productService.GetCategoryByName(name);

if(category == null) return NotFound();
var dto = CategoryToDto(category);
return Ok(dto);
}

我的 API 配置如下:/api/{controller}/{action}/{id}

因此第一个调用适用于此调用:/api/category/getcategory/2

当我尝试使用此调用的第二种方法时:/api/category/getcategorybyname/Jewelry

我收到一条错误消息,指出我的 Controller 中没有与请求匹配的操作。

这里有什么问题?

最佳答案

默认路由配置有一个可选参数,其约束类型为 int。传递“珠宝”不满足该约束。

最简单的解决方法是在操作上应用 RouteAttribute 并以此方式指定参数。

[Route("api/category/getcategorybyname/{name}")]
public IHttpActionResult GetCategoryByName(string name)

确保您的 WebConfig.cs 文件启用了属性路由 line

config.MapHttpAttributeRoutes();

您还可以通过将 RoutePrefix("api/category") 应用于您的 Controller ,然后从 中剥离该部分来缩短 RouteAttribute 中的操作名称 Action 上的路由属性。

关于c# - 具有自定义端点名称的 WEB API .NET 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41285555/

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