我们正在尝试建立springfox:swagger用户界面。但是,当使用值使用post方法创建restcontroller时。对于不可变接口,示例显示的是{}
,模型显示的是接口名称,而不是其他名称。
我注意到,当我使用不可变类作为请求体时,示例显示了它的所有属性。我尝试在接口上添加子类型(@ApiModel(subtypes=ImmutableInputLead.class))
和父配置(@apimmodel(parent=ImmuableInputlead.class))
,但没有改变任何东西
这是我们不变的界面:
@Value.Immutable
@ApiModel
@JsonSerialize(as = ImmutableInputLead.class)
@JsonDeserialize(as = ImmutableInputLead.class)
public interface InputLead {
@Nullable
@ApiModelProperty(example = "request id")
String getRequestId();
@Valid
Contact getContact();
}
我们的映射:
@ApiOperation(value = "Create a new lead")
@PostMapping(value = "/")
@Validated
public ResponseEntity create(@Valid @RequestBody InputLead inputLead) throws URISyntaxException {
String leadId = leadService.create(inputLead);
ResourceRef leadResourceRef = resourceRefFactory.newResourceRef("/api/leads/" + leadId);
return ResponseEntity.created(new URI(leadResourceRef.getUrl())).build();
}
我们的objectmapper:
@Bean
public ObjectMapper objectMapper() {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder()
.indentOutput(true)
.dateFormat(new ISO8601DateFormat())
.serializationInclusion(JsonInclude.Include.NON_EMPTY);
ObjectMapper objectMapper = builder.build();
objectMapper.registerModule(new JodaModule());
objectMapper.registerModule(new GuavaModule());
objectMapper.registerModule(new MazdaValuesModule());
objectMapper.registerModule(new DateTimeJacksonModule());
return objectMapper;
}
我们的招摇过市配置:
@EnableSwagger2
@Configuration
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
.directModelSubstitute(LocalDate.class, String.class)
.directModelSubstitute(LocalTime.class, String.class)
.directModelSubstitute(LocalDateTime.class, String.class)
.apiInfo(apiInfo());
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder().title("Lead capturing API").build();
}
}
我希望InputLead类的变量显示在示例中。
我做错了什么?
我相信您已经解决了这个问题,但是,我将在这里留下一个解决方案供将来查询。
我不确定您使用了哪个昂首阔步的版本,但看起来swagger@2.x不支持@JsonSerializer
@JsonDeserializer
,您可以在此处确认。
一种方法是为您的不可变接口手动添加替代类型,如下所示
Docket(SWAGGER_2).alternateTypeRules(AlternateTypeRules.newRule(KeyIdentifier.class, ImmutableKeyIdentifier.class))
但是,我正在尝试提出更好的解决方案,如果找到它,我会在这里发布
我使用SpringFox和Swagger UI编写API文档 我有一个DTO,其中有一个类型为Long的属性。它99%的时间都没有被填充,因此我想通过将属性值设置为来在文档中演示这一事实。因此,我希望在示例部分使用JSON 我已经试过了 但我得到了一个警告:“属性值必须是常量”。我还能做什么?
本文向大家介绍JS作为值的函数用法示例,包括了JS作为值的函数用法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS作为值的函数用法。分享给大家供大家参考,具体如下: 这个函数接受两个参数,第一个函数应该是一个函数,第二个参数应该是要传递给该函数的一个值.该函数是通用的. 如: 从一个函数中返回另一个函数(一种极为有用的技术),如: 创建一个比较函数: 使用举例: 更多关于JavaS
我想在我的Swagger-ui界面上修改数据类型下的示例值。目前它包含以下默认值(由Swagger生成): 我想指定实数值,而不是“空”值。PS:我用带注释的spring boot:@ API operation,...
我得到了这段代码,我必须选择正确的答案。 现在: a)y值升为幂 b)x所在单元的地址 c)可变单元地址y d)值5 当我在程序中输入它时,我只是弹出,但我不知道那是不是正确的答案。
7.9. 示例: 表达式求值 在本节中,我们会构建一个简单算术表达式的求值器。我们将使用一个接口Expr来表示Go语言中任意的表达式。现在这个接口不需要有方法,但是我们后面会为它增加一些。 // An Expr is an arithmetic expression. type Expr interface{} 我们的表达式语言由浮点数符号(小数点);二元操作符+,-,*, 和/;一元操作符-x
我有一个应用程序,它有一个列表,当它为空时,它显示“空”,但我想显示任何东西,而不是它,但我不能。我试着做了一个验证,但由于某种原因它仍然显示为null。 代码如下: 但以下是它的表现: 我做错了什么?