即使我已经给出了默认值,默认值也被视为swagger中的字符串(空)

时间:2015-02-09 06:25:07

标签: java spring-mvc swagger swagger-ui

我正在尝试将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上的请求和响应时,没有反对该值的文本框,也没有“试一试”按钮。

您能否告诉我需要采取哪些措施来解决问题。

1 个答案:

答案 0 :(得分:0)

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

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

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