我在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)]
答案 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);
}
}
}