需要在 webapi 中传递带有参数的 URL
本文关键字:参数 URL webapi | 更新日期: 2023-09-27 17:56:48
我有以下URL来传递不同的API。
/shared/rendererjob -- I done
/shared/rendererjob/{jobId} -- I done
/shared/rendererjob/{jobId} -- done
/shared/rendererjob/{jobId}/status -- done
/shared/renderer/documentconverter/document -- I done
/shared/renderer/documentconverter/storage -- I done
/shared/renderer/documentconverter/callback -- I done
/shared/rendererhealth?q={level} -- **I dont know how to do this one**
如何为此编写webconfig.cs --/shared/rendererhealth?q={level}
我的配置代码如下。
config.Routes.MapHttpRoute(
name: "RendererApi",
routeTemplate: "shared/{controller}/{renderGUID}",
defaults: new { action = "rendererJob", renderGUID =
RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "RendererAPiStatus",
routeTemplate: "shared/{controller}/{jobid}/status",
defaults: new { action = "getJobStatus", jobid = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DocumentConverterApi",
routeTemplate: "shared/renderer/{controller}/{action}"
);
上面的代码适用于我所做的工作。请让我知道如何使用参数配置控制器。
**How to achieve this path --
http://localhost:12345/shared/rendererhealth?q={level}**
由于您的路由似乎非常依赖于控制器,因此我要做的第一件事是更改现有路由,如下所示:
config.Routes.MapHttpRoute(
name: "RendererApi",
routeTemplate: "shared/rendererjob/{renderGUID}",
defaults: new { action = "rendererJob",
renderGUID = RouteParameter.Optional,
controller="rendererJob" }
);
config.Routes.MapHttpRoute(
name: "RendererAPiStatus",
routeTemplate: "shared/rendererjob/{jobid}/status",
defaults: new { action = "getJobStatus",
controller="rendererjob" }
);
config.Routes.MapHttpRoute(
name: "DocumentConverterApi",
routeTemplate: "shared/renderer/documentconverter/{action}",
defaults: new { controller="documentconverter" }
);
请注意,您不能在路由中间使用可选参数,因此我更改了您的 RendererAPiStatus 路由,以便 jobid 是必需的。
接下来,在末尾为新资源添加新路由:
config.Routes.MapHttpRoute(
name: "RendererHealthApi",
routeTemplate: "shared/rendererhealth",
defaults: new { controller="rendererhealth" }
);
然后,您可以添加新的控制器方法:
public class RendererHealthController : ApiController
{
public string Get(int q)
{
return "hello";
}
}
请注意,上述假设您使用的是 GET 请求,并且 {level} 是一个整数。