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

如何在Spring Boot中将camel case请求正文自动转换为snake case protobuf消息

纪畅
2023-03-14

我有一个这样的endpoint

@PostMapping(value = "/create")
    public Mono<?> issueToken(@RequestBody IssuePayTokenRequest request) {
        return Mono.fromCallable(() -> tokenManagementService.issuePayToken(request)).subscribeOn(Schedulers.boundedElastic());
    }

而IssuePayTokenRequest是这样的

message IssuePayTokenRequest {
  string client_id = 1;
}

根据Google协议的样式指南,我应该对字段使用蛇形大小写样式,所以当客户端调用这个endpoint时,请求体应该是这样的。

{ "client_id": "abcdefg"}

然而,对于JSON样式指南,字段应该使用骆驼案例,像这样

{ "clientId": "abcdefg"}

我是否可以进行一些配置,让Spring Boot自动将驼峰式请求正文转换为蛇壳式protobuf消息?

共有1个答案

金嘉言
2023-03-14

尝试将此配置放在您的DTO上:

@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)

或者,您可以对objectMapper bean进行自定义配置,以影响所有对象:

@Bean
ObjectMapper objectMapper() {
 return new ObjectMapper()
  .setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
}
 类似资料:
  • 我有一条路由(Camel 2.17.3),它使用丰富的 DSL 调用Rest服务并将结果聚合到消息正文中。不过,我遇到了序列化问题。这是我正在尝试的。我的路线如下所示: 正如您所看到的,我想使用enrich()DSL调用一些现有服务,并将这些结果聚合起来,形成一个新的消息体,以便进一步处理。我需要将rest调用的结果从Json转换为MyResponse。我想用这个: 但我需要它已经在我的Aggre

  • 问题内容: 我正在尝试找到一个Java lib / api,它将允许我将HTTP Request POST主体的内容转换为JSON对象。 理想情况下,我想使用Apache Sling 库(因为它们自然暴露在我的容器中)。 我找到的最接近的文件:将标头转换为JSON。 HTTP Post正文采用以下格式:所以我认为那里有些东西,但是我还没找到。 如果某些东西不存在,我可能只需要使用自定义()即可。有

  • 问题内容: 我明白了为什么使用正则表达式的字符串转换一样没有给出所需的输出到这反而给了。我可以用String.substring做一些事情,或者只是替换最后一个字符,但是我认为有一种更好的解决方案。 这是代码: 问题:正在寻找一种更整洁的方式来获得所需的输出? 问题答案: 看到这个问题,从番石榴 就您而言,类似:

  • 我向我的flask应用所在的服务器发出了python post请求。它运行良好,我能够获得所需的数据。 但我想用POSTMAN测试API。我无法做到这一点,因为在某种程度上我对邮递员并不熟悉。 下面是我的python代码。 我正在努力解决这样一个问题:我试图发布到服务器上的数据和文件应该是原始json还是表单数据,或者是正文的x-www-form-urlencoded部分。还有实际的结构应该是什么

  • Spring@Request estBody注释自动将JSON请求正文转换为Object。转换过程对我们来说似乎是一个黑匣子。但是,我需要控制转换过程以使我预期的无效输入失败。 请看下面的代码。JSON请求正文包含一个带有大写字母的“id”字符串。当Spring自动将其转换为UUID对象时,就会成功。 但是,我希望这种带有大写字母的输入失败。不知道@Request estBody注释神奇地做了什么

  • 问题内容: 我想编写一种将CamelCase转换为人类可读名称的方法。 这是测试用例: 问题答案: 这适用于你的测试用例: 这是一个测试工具: 它使用零长度匹配正则表达式以及后向和前向查找在哪里插入空格。基本上有3种模式,我习惯String.format将它们放在一起以使其更具可读性。 这三种模式是: UC behind me, UC followed by LC in front of me n