当前位置: 首页 > 知识库问答 >
问题:

使用swagger code gen发布请求中的无效日期格式(打开api)

阎修明
2023-03-14

您好,我正在使用swagger code gen(v3)在我的Spring Boot项目中使用pom中的以下配置生成服务客户机。xml

<configuration>
    <language>java</language>
    <inputSpec>specs.yaml</inputSpec>
    <apiPackage>api</apiPackage>
    <modelPackage>model</modelPackage>
    <invokerPackage>invoker</invokerPackage>
    <generateApis>true</generateApis>
    <generateApiTests>false</generateApiTests>
    <generateApiDocumentation>false</generateApiDocumentation>
    <generateSupportingFiles>true</generateSupportingFiles>
    <generateModelDocumentation>false</generateModelDocumentation>
    <generateModelTests>false</generateModelTests>
    <typeMappings> 
        <typeMapping>DateTime=LocalDateTime</typeMapping>
        <typeMapping>Date=LocalDate</typeMapping>
    </typeMappings>
    <importMappings> 
        <importMapping>LocalDateTime=java.time.OffsetDateTime</importMapping>
        <importMapping>LocalDate=java.time.LocalDate</importMapping>
    </importMappings>
    <configOptions>
        <library>resttemplate</library>
        <interfaceOnly>true</interfaceOnly>
        <useTags>true</useTags>
        <useBeanValidation>true</useBeanValidation>
        <dateLibrary>java8</dateLibrary>
        <java8>true</java8>
        <sourceFolder>/<sourceFolder>
    </configOptions>

</configuration>

我面临的问题是通过上述配置生成的Api客户端执行POST请求时。发布请求看起来像

{
    "name": "abc",
    "type": "xyz",
    "businessdata": {
        "currency": "INR",
        "startDate": [2020,5,28],
        "endDate": [2021,12,25],
        "code": "X123"
    },
    "seqnumber": "987"

}

在这里,starDate和endDate是Java类中的LocalDate,它们也是由Open Api规范生成的。在这里,我不明白为什么它转换为括号[],因此其他系统正在接收此请求抛出无效的日期例外。

请让我详细解释如何解决这个问题。

共有2个答案

何兴邦
2023-03-14

在所有RestTemplate实例中更新ObjectMapper的完整解决方案:

@Configuration
public class RestTemplateConfiguration {

    @Bean
    public RestTemplate getRestClient() {
        RestTemplate template = new RestTemplate();
        template.getMessageConverters().stream()
            .filter(converter -> converter instanceof AbstractJackson2HttpMessageConverter)
            .map(converter -> (AbstractJackson2HttpMessageConverter) converter)
            .forEach(converter -> converter.getObjectMapper()
                .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)
            );
        return template;
    }

}
华煜祺
2023-03-14

我在ObjectMapper对象中做了同样的事情,同时将其传递给rest模板

objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)
 类似资料:
  • 问题内容: 我正在使用$ resource并缓存get请求的结果。我的问题是,在发布请求后,缓存不会失效。 这是服务的返回值: 这是我在控制器内部使用的保存方法。如您所见,我正在对post请求使用回调,以重新计算名词的查询/列表。 我想在调用post或其他非get方法后使缓存无效。我该怎么办?这是否已经内置在$ resource中,还是我需要自己实现? 问题答案: 您可以创建包装器服务以根据需要进

  • 更新:工作代码! 这是我用来发出POST请求的代码: 作为我得到的回应:未能发布数据400,错误流内容是:{ “代码”:“empty_content”,“消息”:“内容,标题和摘录都是空的。

  • 我正在尝试根据下面的代码提出帖子请求: 此请求不需要身份验证,也不需要登录和密码。在邮递员那里,我可以成功地提出请求,但当我尝试执行上述代码时,我得到了: 401未经授权 我在邮递员那里模拟了错误,它给了我下面的信息: 当我在Postman中将身份验证方法更改为“No Auth”时,请求运行良好。 我想我必须在代码中设置这个选项“No Auth”,但我不知道如何设置。 我这样做: 但错误仍在继续。

  • 问题内容: 我想使用wget将图片(使用身份验证令牌“ AUTH_1624582364932749DFHDD”)上传到远程服务器到“ test”文件夹。 该命令不起作用(授权失败),我想确保它与语法无关: 有什么建议么? 问题答案: Wget当前仅支持x-www-form-urlencoded数据。不是用于将文件作为表单附件传输,而是需要格式为的数据。 并以相同的方式工作:唯一的不同是,您可以在命

  • 我正在尝试从一个简单的Java项目创建一个HTTP POST请求。 我需要通过两个请求保留会话和cookie,所以我选择了Apache HttpClient。 代码编译时没有错误,也没有运行,但返回的内容长度为零,我不明白为什么。 结果是: 更新:我发现响应状态是302(已找到),当我从邮递员那里做同样的请求时,它是200(OK)。 任何人都可以告诉我我的代码有什么问题吗? 谢谢

  • 问题内容: 我想向Access插入一个datetime值,但是出现此错误: net.ucanaccess.jdbc.UcanaccessSQLException:UCAExc ::: 3.0.4数据异常:无效的日期时间格式 这是代码: 问题答案: 错误消息表明您的方法最终试图做类似的事情 并且由于以下两个原因将无法正常工作: UCanAccess希望日期文字被括在井号()中,并且 UCanAcce