ServiceStack Swagger DTO不会被排除

时间:2016-04-11 19:13:29

标签: servicestack swagger

我在ServiceStack应用程序中从Swagger中排除特定DTO时遇到问题。这是我的设置:

[Route("/lists", "GET")]
public class GetLists : IReturn<GetListsResponse>
{
}

[Route("/lists", "POST")]
[Exclude(Feature.Metadata)]
public class CreateList : IReturn<CreateListResponse>
{
}

我期待的行为是Swagger将删除POST请求文档但不删除GET。相反,我将两者都列入其中。对我做错的任何帮助表示赞赏。

更新:我尝试添加以下属性但未成功:

[Restrict(VisibilityTo = RequestAttributes.None)]

3 个答案:

答案 0 :(得分:3)

现在,应该可以从v4.0.55现在this commit提供的available on MyGet解决不同请求DTO的可见性。

答案 1 :(得分:2)

通过查看documentation,看起来您可以使用DTO排除DTO的属性或所有服务 - 但它没有说明仅排除某些内容动词。

答案 2 :(得分:2)

您可以使用[限制]属性限制可见性。 (见documentation)。这是一个基于类的属性,应放在您的Service类上。可见性会影响服务是否显示在公共/元数据页面上(&amp;我也希望Swagger)。

你试过以下吗?

public abstract class MainApp implements ActionListener{

//Just Listing the method that triggers Canvas(extends JPanel and starts painting)
public void startGeneration(){
    String rule = (String) cb.getSelectedItem();
        Jexception.setVisible(false);
        Jexception1.setVisible(false);
        if(genNum > 0){
            cgs = new CAGenerationSet(genNum, rule);
            cAGenList = new ArrayList<>();
            cAGenList = cgs.run(cgs);
            if(sp!= null) {
                frame.remove(sp);
                if(canvas!=null) sp.remove(canvas);
            }
            //initializing canvas and adding it to the JScrollPane
            canvas = new Canvas(cAGenList);
            sp = new JScrollPane();
            splitPane.setDividerLocation(80);
            splitPane.setRightComponent(sp);
            sp.setVisible(true);

            EventQueue.invokeLater(new Runnable() {
                  public void run() {
                    sp.setViewportView(canvas);
                    sp.revalidate();
                  }
                });
            }
            else {
                Jexception.setVisible(false);
                Jexception1.setVisible(true);
            }
  }
}