需要通过URL与参数的WebAPI [英] Need to pass the URL with arguments in webapi
问题描述
我有以下的URL来传递不同的API。
/共享/ rendererjob - 我做的
/共享/ rendererjob / {}的jobId - 我做的
/共享/ rendererjob / {}的jobId - 完成
/共享/ rendererjob / {}的jobId /状态 - 完成/共享/渲染/ documentconverter /文件 - 我做的
/共享/渲染/ documentconverter /存储 - 我做的
/共享/渲染/ documentconverter /回调 - 我做的?/共享/ rendererhealth Q = {}水平 - **我不知道如何做到这一个**
如何写这个webconfig.cs - ?/共享/ rendererhealth Q = {}级
我的设置code是下面。
config.Routes.MapHttpRoute(
名称:RendererApi
routeTemplate:共享/ {控制器} / {} renderGUID
默认:新{行动=rendererJob,renderGUID =
RouteParameter.Optional}
); config.Routes.MapHttpRoute(
名称:RendererAPiStatus
routeTemplate:共享/ {控制器} / {}的JobID /状态
默认:新{行动=getJobStatus,作业ID = RouteParameter.Optional}
); config.Routes.MapHttpRoute(
名称:DocumentConverterApi
routeTemplate:共享/渲染/ {控制器} / {行动} );
以上code正在为我所做的一切。
请让我知道如何配置与参数CONTROLER。
**如何实现这一目标的路径 -
HTTP://本地主机:12345 /共享/ rendererhealth Q = {}水平**
当你的路线似乎是非常依赖于控制,我会做的第一件事就是改变你现有的路由如下:
config.Routes.MapHttpRoute(
名称:RendererApi
routeTemplate:共享/ rendererjob / {} renderGUID
默认:新{行动=rendererJob
renderGUID = RouteParameter.Optional,
控制器=rendererJob}
);config.Routes.MapHttpRoute(
名称:RendererAPiStatus
routeTemplate:共享/ rendererjob / {}的JobID /状态
默认:新{行动=getJobStatus
控制器=rendererjob}
);config.Routes.MapHttpRoute(
名称:DocumentConverterApi
routeTemplate:共享/渲染/ documentconverter / {}行动,
默认:新{控制器=documentconverter}
);
请注意,你不能在一个路线中间的一个可选的参数,所以我已经改变了你的RendererAPiStatus路线,使作业ID是强制性的。
下一页末添加新的路由新资源:
config.Routes.MapHttpRoute(
名称:RendererHealthApi
routeTemplate:共享/ rendererhealth
默认:新{控制器=rendererhealth}
);
您可以再添加新的控制器的方法:
公共类RendererHealthController:ApiController
{
公共字符串获取(INT Q)
{
返回你好;
}
}
请注意上述假定您使用GET请求和{}水平是一个整数。
I have the below URLs to pass the different 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**
How to write the webconfig.cs for this -- /shared/rendererhealth?q={level}
My config code is below.
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}"
);
The above code is working for what I have done. Please let me know how to config the controler with arguments.
**How to achieve this path --
http://localhost:12345/shared/rendererhealth?q={level}**
As your routes appear to be very controller dependent, the first thing I would do is change your existing routing as follows:
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" }
);
Note you cannot have an optional parameter in the middle of a route so I have changed your RendererAPiStatus route so that jobid is mandatory.
Next add a new route at the end for your new resource:
config.Routes.MapHttpRoute(
name: "RendererHealthApi",
routeTemplate: "shared/rendererhealth",
defaults: new { controller="rendererhealth" }
);
You can then add your new controller method:
public class RendererHealthController : ApiController
{
public string Get(int q)
{
return "hello";
}
}
Note the above assumes you are using a GET request and {level} is an integer.
这篇关于需要通过URL与参数的WebAPI的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!