2017-08-07 10 views
0

.NET闊歩モデルスキーマはUNIONによって形成されたGETのために空になるUNIONによって形成されたGETだけのために.NET闊歩モデルスキーマは空である -

にはどうすれば良い示すことができた(単純なGETは、右のモデルスキーマを示します)メソッドswaggerのモデルスキーマは空のスキーマを示しますか?

EMPTYスキーマ: enter image description here

GOODスキーマ:このような enter image description here

答えて

1

使用SwaggerResponse

[SwaggerResponse(HttpStatusCode.OK, "List of customers", typeof(IEnumerable<int>))] 
    [SwaggerResponse(HttpStatusCode.BadRequest, Type = typeof(BadRequestErrorMessageResult))] 
    [SwaggerResponse(HttpStatusCode.NotFound, Type = typeof(NotFoundResult))] 
    public IHttpActionResult GetById(int id) 
    { 
     if (id > 0) 
      return Ok(new int[] { 1, 2 }); 
     else if (id == 0) 
      return NotFound(); 
     else 
      return BadRequest("id must be greater than 0"); 
    } 



あなたとの差が1で使用していることですHttpResponseMessage

enter image description here

enter image description here

0

問題の一部は@HelderSepuで観察したところ、私が送信された応答は、(理由のLINQで "選択" の)IEnumerableをしませんでした。 、私はLINQの中でモデルを使用すると

namespace SupplierB_api.Models { 
    public class SupplierResponse { 
    public int SupplierID; 
    public string SupplierName; 
    public char SupplierType; } 
} 
    1. は、だから私は、右のモデルスキーマを持つために、モデルクラスを作成するために必要な

        var SuppliersDistributor = entities.tblD.Take(5).AsEnumerable() 
             .Select(d => new SupplierResponse { SupplierID = d.distributor_id, SupplierName = d.distributor_name, SupplierType = 'D'}); 
      
            var SuppliersPublisher = entities.tblN.Take(5).AsEnumerable() 
             .Select(p => new SupplierResponse { SupplierID = p.publisher_id, SupplierName = p.publisher_name, SupplierType = 'P' }); 
      
    2. 次に、SwaggerResponseを使用します(@HelderSepuの示唆)。

      [SwaggerResponse(HttpStatusCode.OK, "response", typeof(IOrderedEnumerable<SupplierResponse>))]