NutzCN Logo
问答 请教:nutz-plugins-apidoc 请求参数的示例值怎么显示不出来
发布于 2521天前 作者 JinruiWang 2310 次浏览 复制 上一个帖子 下一个帖子
标签:

我用nutz-plugins-apidoc插件进行api文档生成,注释这样写的:

@Api(name="绑定",description = "绑定设备",
            params = {
                    @ApiParam(name = "uid",description = "用户标识",type = "String",requestData = "u_123445678"),
                    @ApiParam(name = "sn",description = "设备序列号",type = "String",requestData = "aabbccddee"),
                    @ApiParam(name = "token",description = "Token字符串",type = "String",requestData = "eyJhbGciOiJIUzUxMiJ9.eyJzd......GeSgVGlw")
            },
            ok={
                    @ReturnKey(key="code",description="返回码"),
                    @ReturnKey(key="message",description="返回描述"),
                    @ReturnKey(key="data",description="绑定结果。0:成功;1:已经被其他用户绑定"),
            }
    )

看了源码中注释,requestData字段就是示例的值,但是运行后示例列的值中,uid和sn显示为“S",token的值倒是正常的。
请问哪里出问题了?

19 回复

eclipse吗? jdk8吗?

估计是没保存参数名到class文件

刚才试了下,如果标记@Api的方法参数中不写对应的参数,就会正确显示示例值;

入口方法的参数贴一下看看

@Api(name="绑定",description = "绑定设备",
            params = {
                    @ApiParam(name = "uid",description = "用户标识",type = "String",requestData = "u_123445678"),
                    @ApiParam(name = "sn",description = "设备序列号",type = "String",requestData = "aabbccddee"),
                    @ApiParam(name = "token",description = "Token字符串",type = "String",requestData = "eyJhbGciOiJIUzUxMiJ9.eyJzd......GeSgVGlw")
            },
            ok={
                    @ReturnKey(key="code",description="返回码"),
                    @ReturnKey(key="message",description="返回描述"),
                    @ReturnKey(key="data",description="绑定结果。0:成功;1:已经被其他用户绑定"),
            },
            fail = {
                    @ReturnKey(key = "200",description = "返回正常")
            }
    )
    @At
    public BaseResponse<Integer> bind(String uid,String sn){return null}

pom.xml项目吗?

加个arg参数

		<plugins>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.3</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<compilerArgs>
						<arg>-parameters</arg>
					</compilerArgs>
					<useIncrementalCompilation>false</useIncrementalCompilation>
				</configuration>
			</plugin>

还是不行,clean了重新compile,运行起来还是没变。

子类是不是覆盖了这个方法?

我在调试ApidocUrlMapping这个类的时候,make()方法前面几步能看到我写的示例值。

不知道了。。。 你继续debug吧。。。

@wendal 好吧,我再看看

来自炫酷的 NutzCN

@wendal 在ApidocUrlMapping的make()方法中,对”requestData“值的处理,只有439行这句

expParam.put("requestData", instance(clazz));

instance()方法根据clazz类型返回了一个字符串,String类型就返回了”S",然后就没有填值了。只有在api参数个数和@ApiParam注释个数不一致的时候(479行),把没有写进方法参数列表的注释做了处理,就像我上面代码中token的注释就是正常显示的。

good,来个pull request如何?

一直没有用git pull request,这次试试,哈哈~别嫌弃~第一次~

会非常欢迎,不会嫌弃^_^

添加回复
请先登陆
回到顶部