2013-07-26 129 views
7

我在与显示使用ServiceStack在招摇正确的音符问题额外的参数。扬鞭UI显示使用ServiceStack

鉴于这种结构:

[Route("/Widget/{WidgetId}", Summary = "Updates a widget by id", Verbs = "POST", 
    Notes = "Updates a widget by id.")] 
    public class UpdateReqWidget : IReturnVoid 
    { 
     [ApiMember(Name = "WidgetId", Description = "The id of widget to delete.")] 
     public int WidgetId { get; set; } 
    } 

    public class WidgetService 
    { 
     public void Put(UpdateReqWidget req) 
     { 
      //do code here 
     } 
    } 

它的生产:Swagger UI Error

我希望的参数列表只有拥有为widgetid,但它显示为widgetid和UpdageReqWidget,类名的请求。任何想法我做错了什么?

编辑:我使用的是55年3月9日两个ServiceStack和ServiceStack.API.Swagger版本。我更改了模板以更好地满足我们的需求。

+0

你安装了什么版本的ServiceStack和ServiceStack.Api.Swagger?您描述的行为听起来像是最近的版本,但屏幕截图显示了旧版Swagger UI元素。 –

+0

两者都使用3.9.55。我更改了swagger的模板来创建数据类型行为,以便在存在类型主体时,它允许您“点击以获取详细信息”,这将为您提供数据结构。 –

回答

6

有一个recent addition to ServiceStack.Api.Swagger自动生成在扬鞭UI请求主体的参数。我认为有一个边界情况,请求DTO没有没有被指定为路径或查询参数的属性,就像你在这里的情况一样,代码仍然会生成请求体参数,但它将是一个空对象昂首阔步。

+0

感谢您的回复。通常对于更新请求,我可能不会传入一个int,也不会返回void。这也发生在DELETE谓词上(这是我发现问题的地方),我认为这不一定是一个边缘情况......您将根据唯一的ID删除记录。有这个简单的解决办法吗? –

+0

对于使用当前ServiceStack代码的DELETE动词,这是正确的。看起来可能会有一些改进。 –

+0

因此,简而言之,你是说我无法真正解决这个问题吗?如果这是真的,我可以尝试找出解决方法。 –