【问题标题】:Pass url parameter from Appsettings.json (.core) to React将 Appsettings.json (.core) 中的 url 参数传递给 React
【发布时间】:2020-07-01 08:05:20
【问题描述】:

我正在尝试访问 appsettings.json 文件中的 url 参数。原因是 api URL 与 Development 发布的不同。我不完全确定解决此问题的最佳方法。

我找到了可行的解决方案:

how to get config data from appsettings.json with asp.net core & react

正如我从上面的线程中了解到的,我需要创建一个服务并从 React 调用它?这似乎有点奇怪,因为我总是(?)需要向同一个项目发出 API 请求以接收 API 请求所需的 URL。

另一个建议是使用 webpack,或者以某种方式将 url 保存在客户端。但这是否意味着每当我需要更改环境时,我需要在 2 个地方(后端和前端)进行更改?

这就是我的 appsettings.json 文件的外观(相同的变量,但 .Development 和 .Publish 的值不同)。

{
    "Url": "localhost:44000"
}

在我的 Startup 类中,我得到了值:

    var urlValue =
        _configuration.GetSection("Url");

我不能根据环境从后端获取一次值并使用 React 接收它吗?

不确定我是否在这里想错了?

如果有人能够指出我正确的方向,将不胜感激。

【问题讨论】:

    标签: c# reactjs .net-core


    【解决方案1】:

    我对此的解决方案是使用 .env 文档,但仍使用 .core launchSettings env。

    为了使这个解决方案起作用,我需要 env-cmd:

    npm install env-cmd
    

    添加了 3 个 .env 文件:

     1. .env
     2. .env.development
     3. .env.prod
    

    每个文件都包含一个url字符串:

    REACT_APP_Url = https://localhost:44000
    

    我在 .core 启动文件中添加了 env check:

        app.UseSpa(spa =>
                {
                    spa.Options.SourcePath = "ClientApp";
    
                    if (env.IsDevelopment())
                    {
                        spa.UseReactDevelopmentServer(npmScript: "start");
                    }
                    else if (env.IsProduction())
                    {
                        spa.UseReactDevelopmentServer(npmScript: "build");
                    }
                });
    

    当我运行生产代码时 - 我指的是“构建”,所以在我的例子中,对象“构建”将会运行。

    package.json 文件:

    "scripts": {
        "start": "rimraf ./build && react-scripts start",
        "build": "cross-env env-cmd -f .env.prod react-scripts start",
      }
    

    我现在可以使用以下方法访问该 url: {process.env.REACT_APP_Url}

    【讨论】:

    • 这是否意味着您必须在后端和前端应用程序配置中硬编码值?
    • @Hawkzey 如果我没记错的话,不需要它,因为我们没有在后端配置文件中使用任何 API。如果您有任何更好的解决方案,请随时发布。如果我没记错的话,我们确实改变了我们的解决方案,因为我们后来有其他需求。我们确实涉及从后端映射到某些 url 请求,例如:app.map("Api" ...Configure 在启动文件中。
    猜你喜欢
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    • 2016-07-11
    相关资源
    最近更新 更多