【问题标题】:Specifying API Endpoint at runtime when using NSwagStudio使用 NSwagStudio 时在运行时指定 API Endpoint
【发布时间】:2019-09-20 15:51:34
【问题描述】:

我有一个由 NSwagStudio 生成的 API 客户端。我的一个端点的构造函数如下所示:

 private string _baseUrl = "http://localhost:11957";
    private System.Net.Http.HttpClient _httpClient;
    private System.Lazy<Newtonsoft.Json.JsonSerializerSettings> _settings;

    public AccountClient(System.Net.Http.HttpClient httpClient)
    {
        _httpClient = httpClient; 
        _settings = new System.Lazy<Newtonsoft.Json.JsonSerializerSettings>(() => 
        {
            var settings = new Newtonsoft.Json.JsonSerializerSettings();
            UpdateJsonSerializerSettings(settings);
            return settings;
        });
    }

   public string BaseUrl 
        {
            get { return _baseUrl; }
            set { _baseUrl = value; }
        }

生成了大约 5 个这些客户端。显然,对于生产环境,我希望我的 API 端点有所不同。目前我使用编译器提示 (#if debug) 来设置本地或生产端点。

因为所有 5 个客户端都作为单例注入依赖项,是否有一种简单的方法可以配置 BaseUrl 以供所有 5 个客户端使用?我知道我可以在所有 5 个客户端的早期设置 BaseUrl,但我觉得必须有一种更简单的方法来完成它,然后只需复制意大利面。

谢谢!

编辑:在 NSwagStudio 中,我尝试创建一个“配置类”,但无法轻松了解如何使用它或将其应用于此场景。

【问题讨论】:

    标签: nswag nswagstudio


    【解决方案1】:

    您可以将 serverHost 设置为“.”这样url就是一个ctor参数

    【讨论】:

    • 好的,很酷,但是我将如何在依赖注入中使用它,我只能指定一个接口和一个具体的实现?
    • 还有其他 di 注册选项,您可以在其中指定 url 参数
    • 好的。我只习惯通过使用接口来使用依赖注入,然后指定该接口的实现。使用生成的 nswag 客户端,我没有生成接口....所以我看不到如何注入它:(。我在这里弄错了吗?我也无法理解如何“配置对象”适用于 nswag 客户端。文档讨论了它,但没有真正说明如何使用它。
    • 所以这是我的错,我错过了 NSwagStudio 中巨大的“生成接口”按钮。现在我正在生成接口并以正常方式使用 DI。它工作正常(也适用于 Xamarin 表单!)。真是太好了,感谢 NSwagStudio :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-23
    • 2013-04-20
    • 2014-12-27
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    相关资源
    最近更新 更多