WepApi 路由和路由前缀混淆
本文关键字:路由 WepApi 前缀 | 更新日期: 2023-09-27 18:31:38
我有这个控制器:
[Authorize(Roles = Roles.Administrator),
RoutePrefix("Api/Portal/User")]
public class UserController : ServiceApiController
{
/// <summary>
/// Gets all User associated with the Account
/// </summary>
/// <param name="accountId">
/// The account id.
/// </param>
/// <returns>
/// The <see cref="JsonResponse"/>.
/// </returns>
[Route("{accountId:guid}")]
public JsonResponse<UserDto> Get(Guid accountId)
{
return new JsonResponse<UserDto>("Success", true);
}
}
下面的 URL 点击此路线是否正确?
/Api/Portal/User?accountId=5cbcec52-f417-48a2-a241-470e48518858
我正在使用 Fiddler 来执行 GET 请求。
我在这里有点困惑。我的路由设置如下:
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "Api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional });
}
另一个问题,我的路由前缀是Api/Portal/User
,并且User
将保持不变作为实际控制器,所以我可以用Api/Portal/[controller]
或Api/Portal/{controller}
替换
使用您的配置,正确的 URL 将是
/Api/Portal/User/5cbcec52-f417-48a2-a241-470e48518858
如果要使用其他 URL,则必须更改控制器方法,如下所示:
[Route("{accountId:guid}")]
public JsonResponse<UserDto> Get([FromUri]Guid accountId)
{
return new JsonResponse<UserDto>("Success", true);
}
参数属性[FromUri]
定义值的来源。