【发布时间】:2014-07-23 15:23:51
【问题描述】:
我正在为 C# WinForm 应用程序编写一个简单的 REST 客户端。我使用RestSharp 使发送请求和获得响应更容易。我有几个关于我应该如何设计我的客户端的问题。
用户只与客户端交互一次。他推了一个Button,客户端被实例化并传递给private方法在后台做一些逻辑。它从服务器访问对象并将它们与用户内部数据库中的对象同步。
关键是客户端的方法是由private 方法访问的,该方法在用户在 GUI 中的单个操作之后调用。他无法控制调用客户端的哪些方法以及调用顺序。
所以我的问题是:
是否可以在实例化客户端时仅向服务器请求一次令牌,然后将其存储在客户端实例中以供将来在客户端的以下请求中参考?令牌是用户名和密码的哈希值,因此它不应随时间而改变。当然,一旦我创建了一个新的客户端实例,它会再次向服务器请求令牌。
可以在我的客户端中保留一个
Request对象实例吗?然后我可以只设置一次请求标头,所有访问 API 的方法只需要更改请求的资源 URL 和 HTTP 方法。这将减少我的代码中的重复性。
例如:
public PriceListItem[] GetPriceListItems()
{
string requestUrl = Resources.PriceListItemsUrl;
var request = new RestRequest(requestUrl, Method.GET);
request.AddHeader("SecureToken", _token);
var response = Client.Execute(request) as RestResponse;
JObject jObject = JObject.Parse(response.Content);
var priceListItems = jObject["Data"].ToObject<PriceListItem[]>();
return priceListItems;
}
我有很多方法可以利用不同的资源 URL,但都具有相同的标头。如果我在客户端中只保留一个 Request 实例,我只能设置一次标头。这种方法好吗?我想避免任何代表和事件。
【问题讨论】:
标签: c# rest client .net-4.5 restsharp