2017-09-15 227 views
0

使用Nancy v 1.4.1和Nancy.Swagger v 2.1.1(支持Nancy v1的最後一個)時,導航到/ api-docs路徑。有任何想法嗎?我沒有看到任何有關'路徑'字段的設置步驟。Swagger.ObjectModel.Builders.RequiredFieldException:'路徑'是必需的

我的模塊:

public class General : NancyModule 
{ 
    public General() 
    { 


     Get["/","Home"] = parameters => 
     { 
      try 
      { 
       return "home";// View["view/index.html"]; 
      } 
      catch (Exception ex) 
      { 
       return ExceptionHelper.ExceptionResponse(Negotiate, ex); 
      } 
     }; 

     Get["/test/", "Test"] = parameters => { 
      return "testie"; 
     }; 
    } 
} 

我的模塊元數據:

public class GeneralMetadataModule : MetadataModule<PathItem> 
{ 
    public GeneralMetadataModule(ISwaggerModelCatalog modelCatalog) 
    { 
     Describe["Test"] = description => description.AsSwagger(
      with => with.Operation(
       op => op.OperationId("Test") 
         .Tag("Users") 
         .Summary("The list of users") 
         .Description("This returns a list of users from our awesome app"))); 
    } 
} 

堆棧跟蹤:

Nancy.RequestExecutionException:糟糕! ---> Swagger.ObjectModel.Builders.RequiredFieldException:'路徑'是必需的。 ()中的Swagger.ObjectModel.Builders.SwaggerRootBuilder.Build()中的 :Nancy.Swagger.Services.SwaggerMetadataProvider.GetSwaggerJson()在C:\ projects \ nancy-swagger \ src \ Nancy.Swagger \ Services \ SwaggerMetadataProvider.cs:line 91 at Nancy.Swagger.Modules.SwaggerModule。 <> c__DisplayClass0_0。 < .ctor> b__0(Object _)in C:\ projects \ nancy-swagger \ src \ Nancy.Swagger \ Modules \ SwaggerModule.cs:line 11 at CallSite.Target(Closure,CallSite,Func`2,Object) 在Nancy.Routing.Route。 <> c__DisplayClass4.b__3(對象參數,的CancellationToken上下文) ---內部異常堆棧跟蹤的結尾--- 在Nancy.NancyEngine.InvokeOnErrorHook(NancyContext上下文,ErrorPipeline管道,異常前)

回答

1

你在錯誤的順序有它 - 的名字應該是第一,然後路徑

Get["Home", "/"] = parameters => //this is right 
{ 
    try 
    { 
     return "home";// View["view/index.html"]; 
    } 
    catch (Exception ex) 
    { 
     return ExceptionHelper.ExceptionResponse(Negotiate, ex); 
    } 
}; 

Get["Test", "/test/"] = parameters => { //and this is right 
    return "testie"; 
}; 
+0

感謝。希望你在一個月前在這裏LOL –

0

那麼,所以無論如何事實證明,你需要這樣做:

public class General : NancyModule 
{ 
    public General() : base("/v1/general/")//this part 
    { 
     ... 
    { 
} 

即使樣品nancy.swagger項目實際上沒有做到這一點,仍然起作用的某些原因。無論如何,繼承基地(路徑)爲我整理出來。