具有嵌入式“方法”属性的适用于POX API的.NET模型
我有使用.NET技术实现API的要求。该协议是基于HTTP的“普通旧XML”(POX)。有6个API调用,但全部来自相同的URI。 API方法由*XML元素中的“method”属性标识。请求和响应中的子XML元素取决于调用哪个方法。具有嵌入式“方法”属性的适用于POX API的.NET模型
例如:
<req method="GetStuff"><id>42</id></req>
可能会给响应
<resp method="GetStuff"><Thing name="Bob"/></resp>
或者:
<req method="Status"><verbose>false</verbose></req>
可能会给响应
<resp method="Status"><status>OK</status></resp>
我已经考虑过WCF--我可以看到,遵循REST API的示例,我可以轻松地获得XML序列化和反序列化,但是看不到明显的方法来将方法属性映射到单独的ServiceContract
方法。我也可以考虑MVC,但是需要在MVC管道中的某个地方将该方法映射到相应的Action。
请提出建议?
你想要的方法调度技术(<req method='methodName'>
)是一种非标准技术,所以没有内置的支持。你有几个选择:
1)只要你自己做派遣。例如。如果使用WCF,请使用一个OperationContract方法查看属性,然后调用您需要的6种方法之一。
2)创建一个自定义调度程序。 对于WCF,请看http://msdn.microsoft.com/en-us/library/ms734665%28v=vs.110%29.aspx。对于ASP.NET Web API,您可能从这里开始 - http://www.asp.net/web-api/overview/advanced/http-message-handlers - 但我的经验不足,因此无法确定。
方法#1当然容易得多,但如果您要创建很多这样的API,#2可能是要走的路。或者只是转向更标准的东西 - 无论是SOAP还是“真正的”RESTful API,其中所有路由/分派信息都在URL本身中,而不在消息体中。