我正在开发一个C#程序,它必须执行各种HTTP请求才能获得不同类型的信息(区域中特定项目的价格,项目价格历史,两个区域之间的路线等)。
我已经开始实现一个IRequest接口,该接口包含所有请求必须具有的两个属性:
public interface IRequest
{
ReturnDataType DataReturnType { get; }
HttpWebRequest HttpRequest { get; }
}
public enum ReturnDataType
{
Xml,
Json
};
我想在该接口中添加一个列表(或任何其他容器),其中包含请求的参数(将添加到URL中),以便我可以通过引用IRequest接口来访问它们。不幸的是,由于每个http请求都不一定有相同的请求,如果他们这样做,则不一定按照相同的顺序,我不知道如何实现这一点。我想出的唯一解决方案是在接口中有一个List<String>
,并依赖程序员读取参数x应始终在http请求a,参数y秒等列表中的第一个,参数z总是首先用于http请求b等。
由于我可能会成为唯一接触此代码的人,因此从长远来看可能不会引起问题,但如果存在问题,我仍然希望使用更好的解决方案。
答案 0 :(得分:1)
你能做到以下几点:
public class GetItemPriceRequest: IRequest
{
public string ItemNumber {set;get;}
public string UserName {set;get;}
}
public GetItemHistoryRequest: IRequest
{
// my properties
}
每个请求等等。并为每个请求提供响应类。这种方式更清洁和组织。此外,您知道基于请求对象类型的预期参数。意思是,如果传递的请求对象是GetItemPriceRequest
类型;然后我应该看到ItemNumber
字段。
我希望这能帮助您解决问题。如果您有问题,请告诉我。
答案 1 :(得分:1)
作为补充,您可以找到有用的Command design pattern - 它将命令请求封装为对象。此外,您还可以使用不同的请求,队列或日志请求参数化客户端,并支持可撤销操作。
以及如何
执行各种HTTP请求以获取不同类型的信息
可以帮助您ParameterObject - 它会处理一连串电话(更多详情here)。