簡體   English   中英

ASP.NET 和 C#:你在哪里存儲 rest 客戶端 Z572D4E421E5E6B20BC11D815EEA

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM