2017-08-24 7 views
0

SwaggerヘルプページのSwashbuckleを使用してカスタムスワッガーリクエストの例を設定するためのチュートリアルthisをフォローしました。リストを使用しているときにSwaggerRequestExampleがエラーをスローする

それはAPIが身体の引数として単一のオブジェクトがかかりますが、リストを使用しているとき、私は例外ここで

「オブジェクトのインスタンスに設定されていないオブジェクト」を取得するとき正常に動作するコード例

です
using Swashbuckle.Examples; 

[HttpPost] 
[SwaggerRequestExample(typeof(List<TestModel>), typeof(TestExample))]  
public IHttpActionResult ListTest([FromBody] List<TestModel> tests) 
{ 
    return Ok(tests); 
} 

public class TestExample : IExamplesProvider 
{ 
    public object GetExamples() 
    { 
     return new List<TestModel>() { 
      new TestModel() 
      { 
       Id = 1, 
       Text = "First object" 
      }, 
      new TestModel() 
      { 
       Id = 2, 
       Text = "Second object" 
      }, 
     }; 
    } 
} 

すべてのヘルプは、これは私はそれを動作させるためにやったことあるApplySchemaVendorExtensionsを使用する@HelderSepuの提案で

+0

@HelderSepu TestModelは、int Idとstring Textという2つのプロパティを持つサンプルモデルです。私が使っているモデルははるかに複雑ですが、エラーは同じですので、モデルが問題ではないと思います。 - SwaggerRequestExampleを削除した場合は、はい、それはエラーを投げることはありません。しかし、その後、私は欲しくない自動生成されたサンプルリクエストを取得し、SwaggerRequestExampleを使用する理由です。 – David

+0

@HelderSepu正解ですが、これはrequestexampleであり、responseexampleではなく、リクエストがリストであるという点です。 – David

+0

@HelderSepuはい、正しくありません。リクエストは単一のオブジェクトです。 – David

答えて

0

をいただければ幸いです。

私SwaggerConfig.cs

c.SchemaFilter<ApplySchemaVendorExtensions>(); 

ApplySchemaVendorExtensions.cs

using Swashbuckle.Swagger;  
public class ApplySchemaVendorExtensions : ISchemaFilter 
{ 
    public void Apply(Schema schema, SchemaRegistry schemaRegistry, Type type) 
    { 
     if (schema.properties != null) 
     { 
      if (type == typeof(TestModel)) 
      { 
       schema.example = new TestModel() 
       { 
        Id = 1, 
        Text = "Custom text value" 
       }; 
      } 
     } 
    } 
} 

で私は誰かがよりよい解決策を持っている場合には、まだ答えとしてマークされません。

関連する問題