API交互设计

时间:2013-01-16 10:19:14

标签: c# design-patterns architecture

我目前正在设计一个系统组件(在c#中)与api进行交互。 api调用的格式为:

http:// <name of api site>\< JSP page name>?<parameter set>

该调用返回包含调用结果或错误消息的xml文档。我最终希望组件返回以下类型的对象:

 public readonly class APIResult<T>
 {
     public bool Success {get; set;}
     public T Details {get; set;}
 }

我目前的计划是创建一个创建URL的类,然后将其传递给另一个通用类(类型为T)以使用url调用API,该url将询问响应,该响应将返回一个新的APIResult,详细信息为从反序列化的Xml结果中提取。

我在SO的专家面前有2个问题。

1)任何人都可以看到这种方法的问题,或建议一种更好的方式来实现我的意图。

2)是否有一种优雅的方式来创建URL,而不是简单地使用带有传递给函数的参数的string.format。

非常感谢,

番茄酱

1 个答案:

答案 0 :(得分:0)

三项建议:

  1. 避免使用Success属性。每次点击API时,该属性都会强制您检查它。你将在任何地方结束这样的代码:

    如果(result.Success) {    // 做一点事 } 其他 {    //这里......什么!? }

    在OOP中,异常优于错误代码/标志。

  2. 使用属性(装饰)自动反序列化API响应(没有代码)。

  3. 使用UriBuilder ......好吧,建立uri:http://msdn.microsoft.com/en-us/library/system.uribuilder.scheme.aspx