2015-11-28 39 views
2

我返回一個URI作爲從我的網絡API控制器響應的位置標頭,如下圖所示:Location響應頭從網上API返回到揚鞭的UI

[HttpPost] 
public HttpResponseMessage PostTenant([FromBody] JObject value) 
{ 
    string tenantName; 
    try 
    { 
     tenantName = value.GetValue("name").ToString(); 
    } 
    catch (Exception e) 
    { 
     throw new HttpResponseException(
      this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, e)); 
    } 

    try 
    { 
     DbInteract.InsertTenant(tenantName.Replace(" ", string.Empty)); 
     var uri = Url.Link("TenantHttpRoute2", new { tenantName }); 
     var response = new HttpResponseMessage(HttpStatusCode.Created); 
     response.Headers.Location = new Uri(uri); 
     return response; 
    } 
    catch... 
} 

招搖的用戶界面客戶端使POST請求,但響應標題不包含位置 uri。這似乎是這樣的:

POST request from Swagger-ui

正如你可以在圖片中看到,該響應頭是 { 「內涵式」:空 }


招搖JSON對於此帖的請求是:

 "post": { 
      "tags": [ 
       "Tenant" 
      ], 
      "summary": "Add a new tenant", 
      "description": "Adds a tenant and returns admin user account information to be used in further calls.", 
      "consumes": [ 
       "application/json", 
       "application/xml" 
      ], 
      "produces": [ 
       "application/json" 
      ], 
      "parameters": [ 
       { 
        "in": "body", 
        "name": "Tenant", 
        "description": "Name of the tenant must be alphanumeric without any special characters.", 
        "required": true, 
        "schema": { 
         "$ref": "#/definitions/CreateTenant" 
        } 
       } 
      ], 
      "responses": { 
       "201": { 
        "description": "Tenant Inserted", 
        "headers": [ 
         { 
          "description": "Location", 
          "type": "string" 
         } 
        ] 
       }, 
       "400": { 
        "description": "Invalid JSON Format of input" 
       }, 
       "405": { 
        "description": "Tenant by this name already exists; Use PUT instead" 
       }, 
       "500": { 
        "description": "InternalServerError" 
       } 
      } 
     } 

這裏有什麼問題?爲什麼我在swagger-ui中看不到響應頭?如果您需要更多信息,請告訴我。謝謝

回答

0

意圖似乎足夠清楚:成功的響應返回201創建一個位置標題指向新創建的資源。應該工作...

我可能會刪除「produce」屬性,因爲您尚未在任何地方定義任何響應。

0

嘗試用:

"headers" : { "Location" : { "description": "...", "type" : "string" } } 

相反的:

"headers" : [] 

所以對象,而不是陣列。

+0

要改善你的答案,也許你可以格式化源代碼 – Kalamarico