2014-04-04 84 views
0

我有下面的URL來傳遞不同的API。需要通過webapi中的參數傳遞URL

/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 - ?/共享/ rendererhealth Q = {}水平

我的配置的代碼如下。

 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}** 

回答

0

當你的路線似乎是非常控制器相關的,我要做的第一件事就是改變你現有的路由如下:

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}是一個整數。

+0

再次感謝喬恩,其大大工作..... :-) – kiriti

+0

嗨,喬恩,早上好。請你幫助下面的問題。 我需要將HttpRequestMessage轉換爲System.ServiceModel.Channels.Messages對象。我已經在網址上發佈了這個問題:http://stackoverflow.com/questions/22910745/converting-httprequestmessage-to-xml-objects。 – kiriti