我有一個工作的API與不同的端點 - 一個不同的控制器 - 對於我期望收到的每種類型的XML post數據。現在,客戶希望我們爲所有事物使用相同的端點。唯一確定方向的是XML數據的內容 - 基本上是根元素的名稱。多個apis共享相同端點的正確路由配置
我希望能夠儘可能多地利用我現有的工作,所以我試圖添加一個新的控制器「路由器」,它完全符合以下條件 - 根據收到的內容重定向到正確的路由。我嘗試了一些東西,但似乎沒有得到任何牽引力。
如果有更好的方法來處理這個問題,我會樂於聽到它。
// WebApiConfig.cs
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}",
//routeTemplate: "Router",
constraints: null,
defaults: new { id = RouteParameter.Optional }
);
//在RouteConfig.cs中 - 這是多餘的特定MapRoute和MapHttpRoute?
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(name: "First", url: "First/{action}/{id}");
routes.MapRoute(name: "Second", url: "Second/{action}/{id}");
routes.MapRoute(name: "Third", url: "Third/{action}/{id}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home",
action = "Index",
id = UrlParameter.Optional }
);
但無論如何,我有我的API交通擊中RouterController (我會承認我並不完全清楚爲什麼它的工作),但一旦 那裏,我怎麼去重新路由基於XML數據發佈了嗎?
public RouterController()
{
log.Debug("Inside RouterController");
}
public IHttpActionResult Post(object postdata)
{
// how to determine the postdata contents/XML structure to get the
// root element and then redirect to the "true" controller?
}
這裏有幾個問題:第一,爲什麼在WebApiConfig.cs路由定義和RouteConfig.cs的(明顯)路由冗餘?其次,根據內容和路線適當地識別流量的最佳方式是什麼?
感謝您的協助。我承認在這裏相當失明,所以任何幫助表示讚賞。
非常感謝,這非常有幫助。我用這種方式重新設計了一半,到目前爲止,事情正在發生變化。欣賞它! – nonesuch 2015-04-02 18:48:18
所以,我的一些類是嵌套的xml結構。當我執行Deserialize(xmlReader)時,在新的NestedClass對象中正確創建了根元素的直接子元素,但是下面的任何元素及其子元素均爲null。我一直在糾纏這幾個小時,無法弄清楚發生了什麼問題。 – nonesuch 2015-04-08 04:39:51
我認爲你需要提出新的問題。添加您用於序列化的XML示例和類。你可以在這裏添加一個問題鏈接作爲評論。 – 2015-04-08 08:03:57