【问题标题】:Default value is taken as (empty) for a string in swagger even though i have given a default value即使我已经给出了默认值,默认值也被视为(空)在招摇中的字符串
【发布时间】:2015-02-09 06:25:06
【问题描述】:

我正在尝试将 swagger 与我的项目集成。

我已经在 pom 中给出了依赖项,将 dist 文件夹从 swagger 复制到我的工作区中。

<repositories>
    <repository>
        <id>oss-jfrog-artifactory</id>
        <name>oss-jfrog-artifactory-releases</name>
        <url>http://oss.jfrog.org/artifactory/oss-release-local</url>
    </repository>
</repositories> 

<dependency>
        <groupId>com.mangofactory</groupId>
        <artifactId>swagger-springmvc</artifactId>
        <version>0.8.8</version>
    </dependency>
    <dependency>
        <groupId>org.ajar</groupId>
        <artifactId>swagger-spring-mvc-ui</artifactId>
        <version>0.1</version>
        <scope>compile</scope>
    </dependency>

我还没有创建 swagger 配置类,而是在应用程序上下文中添加了这些。

<mvc:default-servlet-handler/>
<context:annotation-config />
<mvc:annotation-driven/>
<bean name="springSwaggerConfig" class="com.mangofactory.swagger.configuration.SpringSwaggerConfig" />

<bean id="swaggerSpringMvcPlugin" class="com.mangofactory.swagger.plugin.SwaggerSpringMvcPlugin">
    <constructor-arg ref="springSwaggerConfig"></constructor-arg> 
</bean>

我的 API 接受一个路径变量并给我响应。这是示例 API

@ApiOperation(value="This is the test API")
    @RequestMapping(value = "sayHello/{userName}", method = RequestMethod.GET)
    public @ResponseBody String testAPI(@ApiParam(defaultValue="xyz", required=true) @PathVariable String userName){
        return "Hello" + userName; 
    }   

即使我给出了默认值,它也没有取值,而是取值作为(空)。

在 swagger 上尝试检查请求和响应时,没有针对值的文本框,也没有“试用”按钮。

您能告诉我需要做什么来解决这个问题吗?!

【问题讨论】:

  • 第一步是使用最新版本的库,目前是 0.9.5。如果这不起作用,那么它可能是一个错误。你不会在这里得到任何解决方法,你只需要在项目的存储库上打开一个问题。
  • 只是一个旁注。当您添加defaultValue 时,您将该参数设置为非required,因此您的required 标志在那里没有做太多...

标签: java spring-mvc swagger swagger-ui


【解决方案1】:

你不能在 Spring MVC 中为 PathVariable 设置默认值,因为没有办法区分带有空路径变量的请求和持有默认值的请求,所以映射不匹配。

对于缺少的输入字段,您应该为您的注释设置以下属性

@ApiParam(required=true, paramType = "path") @PathVariable String userName

【讨论】:

  • 好的.. 但是如果我没有在 ui 上获得文本框和“试用”按钮,我如何在 swagger-ui 中输入路径变量的值。附加的屏幕截图将告诉您 UI 是如何为我显示的。
  • 也许我的答案让你感到困惑,现在编辑它
  • 我想尝试不同用户名值的 API。为此,我需要为路径变量提供不同的值。但即使在我删除了 api 参数的默认值之后,我也无法在 UI 中给出它。
  • 请参考所附截图。我无法传递路径变量。它的值显示为(空)
  • 我再次编辑添加了 paramType="path" 这是你所缺少的
猜你喜欢
  • 2022-11-14
  • 1970-01-01
  • 1970-01-01
  • 2013-03-12
  • 2020-07-27
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多