如何使用Swagger显示 Camel 休息参数对象列表

mmvthczy  于 2022-11-07  发布在  Apache
关注(0)|答案(1)|浏览(129)

如何让camel-swagger-java扫描camelrestapi路由并表示一个rest端点参数,该参数是pojo对象的列表,其中这些pojo具有json属性?
当尝试使用List或SamplePojo[]作为camel rest端点主体时,camel-swagger-java会使用.type(SamplePojo[].class).typeList(SamplePojo.class)来生成一个API页面,该页面将主体显示为字符串,而不是显示SamplePojo类中所有属性的json。
有一个.arrayType方法可以用于路由参数,但没有提到应该指定什么:.arrayType(“这里是什么?”)
下面的尝试将类型显示为字符串,而不是json属性:
.arrayType(SamplePojo.class.getName())

  • 剩余操作参数定义 *:
/**
 * Sets the Swagger Parameter array type.
 * Required if data type is "array". Describes the type of items in the array.
 */
public void setArrayType(String arrayType) {
    this.arrayType = arrayType;
}

有人问这个没有决议的人:
https://camel.465427.n5.nabble.com/How-to-get-long-and-array-data-types-working-in-camel-swagger-java-td5775343.html
有swagger的camel示例,但没有List param示例:
https://github.com/Talend/apache-camel/blob/master/examples/camel-example-swagger-cdi/src/main/java/org/apache/camel/example/cdi/UserRouteBuilder.java

8dtrkrch

8dtrkrch1#

我也有同样的问题。我发现这个setter只支持简单的类型(字符串,浮点等)。下面的源代码来自org.apache.camel.swagger.RestSwaggerReader:

if (isArray) {
if (param.getArrayType() != null) {
    if (param.getArrayType().equalsIgnoreCase("string")) {
        defineItems(serializableParameter, allowableValues, new StringProperty(), String.class);
    }
    if (param.getArrayType().equalsIgnoreCase("int")
            || param.getArrayType().equalsIgnoreCase("integer")) {
        defineItems(serializableParameter, allowableValues, new IntegerProperty(),
                Integer.class);
    }
    if (param.getArrayType().equalsIgnoreCase("long")) {
        defineItems(serializableParameter, allowableValues, new LongProperty(), Long.class);
    }
    if (param.getArrayType().equalsIgnoreCase("float")) {
        defineItems(serializableParameter, allowableValues, new FloatProperty(), Float.class);
    }
    if (param.getArrayType().equalsIgnoreCase("double")) {
        defineItems(serializableParameter, allowableValues, new DoubleProperty(), Double.class);
    }
    if (param.getArrayType().equalsIgnoreCase("boolean")) {
        defineItems(serializableParameter, allowableValues, new BooleanProperty(),
                Boolean.class);
    }
}

相关问题