[英]ASP.NET and C#: where do you store the rest client url?
我有我的 rest 客戶端 url 硬編碼在我的代碼隱藏中,但是在同行評審我的代碼時,我被要求移動 Z572D4E421E5E6B9BC11D815E8A0271,以便它可以更改為每個環境的配置文件。
Visual Studio 2019 現在抱怨,因為我的 rest 客戶端 url 在 url 本身中有一個無效的=
符號作為令牌,它期望;
而是作為令牌。
有沒有人遇到過這種情況,將 rest 客戶端移動到配置文件是否正確? 理論上不應該改變。
無法共享完整的 url,但突出顯示為錯誤的部分是: version=2.0&details=true
。
我找到了答案。 問題出在&
符號本身。 一旦轉換為&
,Visual Studio 突出顯示的錯誤消失了,我的解決方案再次起作用。
如果我這樣做,我將像這樣僅將基礎 url 保存在配置文件中
"WebConfig": {
"SmsCenterApi": "https://some_site.com/SendService"
}
在代碼中我可以完成鏈接
string url = WebConficData.SmsCenterApi+"version=2.0&details=true";
之后我可以使用 url 提出一些要求。 對於多環境 web.config 和 appsettings 非常糟糕。 您只需為每個環境更改基本 url 即可。
我想你的問題的答案
您在哪里存儲 rest 客戶端 url?
將 rest url 移動到配置文件是否正確?
取決於您如何實現對 url 的 rest 請求。 由於您沒有顯示有關如何實現 rest 調用的任何信息,因此我想向您展示一種可能的方法,並希望讓您對在實現解決方案時應該考慮哪些事項有一個印象。
所以我們基本上可以(為了完整起見)將一個休息端點 url 分成兩部分,這可能會影響我們的實現。
底座 url:
"https://www.some-nice-name.com/SomeEndPoint"
和參數
?key1=value1&key2=value2
考慮到這一點,您可以 go 方式並將它們拆分,將基礎 url 和參數存儲在配置文件中的兩個不同節點/屬性中:
{
"BaseUrl" : "https://www.some-nice-name.com/SomeEndPoint",
"UrlParams" : "?key1=value1&key2=value2"
}
或者在一個節點/屬性中,甚至將每個單個參數對(“key1=value1”)拆分為自己的字段。 等等等等......
無論如何,如果我們現在跳入我們的 C# 代碼並實現 Rest 調用,我們就有各種不同的可能解決方案。 對於這個例子,我將向您展示如何使用 RestSharp NuGet package 以及它為什么會影響我們對上述問題的決定。
所以一個基本的例子:
// I will not show the implementation of ReadYourConfigStuff() because its fairly clear what should happen here
var config = ReadYourConfigStuff();
// Give the BaseUrl to our REST client
var restClient = new RestClient(config.BaseUrl);
// Just taking GET as we have some GET Parameters
var restRequest = new RestRequest(Method.GET);
到目前為止,一切都很好。 但是我們仍然錯過了我們的參數,對吧? 讓我們 go 前進:
// RestSharp gives us a very nice tool to add GET parameters to our request
restRequest.AddParameter("key1", "value1");
restRequest.AddParameter("key2", "value2");
這看起來與我們添加到配置文件中的內容完全不同,是嗎? 是的,它確實。 由於 RestSharp 為我們提供了一個允許一個一個添加參數的工具,我們可以自由選擇如何在我們的代碼中存儲和維護這些參數。 如果我們看看 AddParameter 定義
public IRestRequest AddParameter(string name, object value);
我們看到第二個參數可以是任何 object。 驚人!
所以我對你的問題的回答是:是的,你可以將它存儲在配置文件中,但它適合你的實現嗎? 參數是固定的還是改變了? 您最喜歡的工具希望您如何實現 rest 請求?
根據這些問題的答案,我會決定是否使用配置文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.