gpt4 book ai didi

c# - 使用 WebAPI 路由属性

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

我有一些方法,我希望它们的 URL 遵循特定的模式。

基本上有餐厅,餐厅有 ID,餐厅下面有一系列终端。

我正在尝试让以下类型的模式出现:api/Restaurant - 获取所有餐厅api/Restaurant/Bobs - 获取 ID 为 Bobs 的餐厅api/Restaurant/Bobs/terminals - 获取 bobs 餐厅的所有终端api/Restaurant/bobs/terminals/second - 获取餐厅 bob 中 ID 为 second 的终端

我有执行此操作的方法,并且我已将 Route 属性分配给每个方法,如下所示:

    [HttpGet]
public IEnumerable<IRestaurant> Get()
{
//do stuff, return all
}

[HttpGet]
[Route("api/Restaurant/{restuarantName}")]
public IRestaurant Get(string restaurantName)
{
//do stuff
}

[HttpGet]
[Route("api/restuarant/{restaurantName}/terminals")]
public IEnumerable<IMiseTerminalDevice> GetDevices(string restaurantName)
{
//do stuff
}

[HttpGet]
[Route("api/restaurant/{restaurantName}/terminals/{terminalName}")]
public IMiseTerminalDevice GetDeviceByName(string restaurantName, string terminalName)
{
//do stuff
}

但是只有我的基本 GET (api/Restaurant) 有效。我的 WebAPI 配置是默认的,并且读取

    config.MapHttpAttributeRoutes();

config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);

config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));

有人知道我错在哪里吗?所有其他方法返回路由不匹配(​​带有 ID 的餐厅)或 404。

提前致谢!

最佳答案

我刚刚创建了包含 ProductsController 的默认 WEB API 项目。接下来,我粘贴了您的 api 方法。

  public class ProductsController:ApiController
{



[HttpGet]
[Route("api/Restaurant/{restaurantName}")]
public IHttpActionResult Get(string restaurantName)
{
//do stuff
return Ok("api/Restaurant/{restuarantName}");
}

[HttpGet]
[Route("api/restuarant/{restaurantName}/terminals")]
public IHttpActionResult GetDevices(string restaurantName)
{
//do stuff
return Ok("api/restuarant/{restaurantName}/terminals");
}

[HttpGet]
[Route("api/restaurant/{restaurantName}/terminals/{terminalName}")]
public IHttpActionResult GetDeviceByName(string restaurantName, string terminalName)
{
//do stuff
return Ok("api/restaurant/{restaurantName}/terminals/{terminalName}");
}
}

最后我用Fiddler做了一个请求

**http://localhost:9969/api/restuarant/Vanbeo/terminals**

一切正常!

系统配置:Visual Studio 2013、WEB API 2.2、Net 4.5

你能用一个空项目重试吗?

PS:由于评论空间不足,我必须将此作为答案发布!

关于c# - 使用 WebAPI 路由属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25111156/

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