ASP.NET和C#:rest客户端url存储在哪里?

ASP.NET和C#:rest客户端url存储在哪里?,c#,asp.net,rest,config,visual-studio-2019,C#,Asp.net,Rest,Config,Visual Studio 2019,我在代码中硬编码了rest客户机url,但在同行检查我的代码时,我被要求将该url移动到配置文件中,以便可以针对每个环境进行更改 Visual Studio 2019现在抱怨,因为我的rest客户端url在url本身中有一个无效的=符号作为令牌,它需要改为令牌 有没有人遇到过这种情况,将rest客户机移动到配置文件是否正确?理论上,这一点不应该改变 无法共享完整的url,但突出显示为错误的部分是:version=2.0&details=true我找到了答案。问题出在&符号本身。一旦转换为&

我在代码中硬编码了rest客户机url,但在同行检查我的代码时,我被要求将该url移动到配置文件中,以便可以针对每个环境进行更改

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调用的任何信息,所以我想向您展示一种可能的方式,希望能给您一个关于在实现解决方案时应该考虑哪些事项的印象。 因此,我们基本上可以(为了完整性)将rest端点url分成两部分,这可能会影响我们的实现

基本url:

"https://www.some-nice-name.com/SomeEndPoint"
以及参数

?key1=value1&key2=value2
考虑到这一点,您可以将它们拆分,将基本url和参数存储在配置文件中的两个不同节点/属性中:

{
    "BaseUrl" : "https://www.some-nice-name.com/SomeEndPoint",
    "UrlParams" : "?key1=value1&key2=value2"
}
或者在一个节点/属性中,甚至将每个单个参数对(“key1=value1”)拆分为自己的字段。等等,等等

无论如何,如果我们现在跳进C代码并实现Rest调用,我们就有了一系列不同的可能解决方案。对于这个例子,我将向您展示如何使用RestSharp NuGet包,以及为什么它可能会影响我们对上述问题的决定

所以有一个基本的例子:

// 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); 
到目前为止还不错。但我们还是错过了参数,对吗? 让我们继续:

// 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);
我们看到第二个参数可以是任何对象。太棒了

因此,我对您的问题的回答是:是的,您可以将其存储在配置文件中,但它是否适合您的实现?参数是固定的还是变化的?您最喜欢的工具希望您如何实现rest请求


根据对这些问题的回答,我会决定是否使用配置文件。

问题的一个例子是“rest客户端到配置文件”中的rest客户端或rest客户端url您可能需要共享一个匿名版本的URL和读取URL的代码,以便能够收到任何真正有意义的建议,除非有人胡乱猜测。配置文件的行(匿名)和完整的错误消息将非常有用。