簡體   English   中英

不記名令牌的 NSwag CSharpClientGenerator 自定義請求標頭

[英]NSwag CSharpClientGenerator custom request headers for bearer token

是否可以使用 NSwag CSharpClientGenerator 添加自定義請求標頭?

我從我的 API 端點之一生成了這個方法,它接受一些參數,包括一個 BearerToken。 請注意,在我的HttpRequestMessageBody我有這個硬編碼的非自動生成的行// request_.Headers.Add("authorization", "Bearer " + bearerToken); how can I add this? // request_.Headers.Add("authorization", "Bearer " + bearerToken); how can I add this? . 在使用 Swagger JSON 負載生成我的客戶端 API 時,是否有某種方式以編程方式添加它?

public async System.Threading.Tasks.Task<UnifiedActivityMappingGroupMetadata> GetActivityMappingAsync(System.Guid instanceId, System.Guid groupId, string bearerToken, System.Threading.CancellationToken cancellationToken)
{
    if (instanceId == null)
        throw new System.ArgumentNullException("instanceId");

    if (groupId == null)
        throw new System.ArgumentNullException("groupId");

    if (bearerToken == null)
        throw new System.ArgumentNullException("bearerToken");

    var urlBuilder_ = new System.Text.StringBuilder();
    urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/api/instances/{instanceId}/manage/activitymappings/{groupId}");
    urlBuilder_.Replace("{instanceId}", System.Uri.EscapeDataString(ConvertToString(instanceId, System.Globalization.CultureInfo.InvariantCulture)));
    urlBuilder_.Replace("{groupId}", System.Uri.EscapeDataString(ConvertToString(groupId, System.Globalization.CultureInfo.InvariantCulture)));
    urlBuilder_.Replace("{bearerToken}", System.Uri.EscapeDataString(ConvertToString(bearerToken, System.Globalization.CultureInfo.InvariantCulture)));

    var client_ = _httpClient;
    try
    {
        using (var request_ = new System.Net.Http.HttpRequestMessage())
        {
            request_.Method = new System.Net.Http.HttpMethod("GET");
            // request_.Headers.Add("authorization", "Bearer " + bearerToken); how can I add this?
            request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json"));

            PrepareRequest(client_, request_, urlBuilder_);
            var url_ = urlBuilder_.ToString();
            request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute);
            PrepareRequest(client_, request_, url_);

一個解決方案可以讓您使用自定義類包裝生成的客戶端

  • 隱藏不需要的客戶端方法
  • 返回內部類型(進行映射)
  • 實現自定義邏輯,就像你問的那樣

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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