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

接收体的Spring类型

梁丘远航
2023-03-14

根据这个答案,我在控制器中设置了以下方法:

@PostMapping(path = PathConstants.START_ACTION, consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE, MediaType.APPLICATION_JSON_VALUE})
    public ResponseEntity<BaseResponse<ProcessInstance>> start(@PathVariable String processDefinitionId,
            @RequestBody(required = false) String params)

现在,我需要根据我的@RequestBody是一种媒体类型还是另一种媒体类型而做出不同的行为,因此我需要知道我的paramsbody是否是json或URLCoded。有办法做到这一点吗?

共有1个答案

申屠鹏
2023-03-14

您可以简单地注入Content-Type标头。

    @PostMapping(path = "/{processDefinitionId}", consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE, MediaType.APPLICATION_JSON_VALUE})
    public ResponseEntity<String> start(@PathVariable String processDefinitionId,
                                        @RequestBody(required = false) String params,
                                        @RequestHeader("Content-Type") String contentType) {
        if (contentType.startsWith(MediaType.APPLICATION_JSON_VALUE)) {
            System.out.println("json");
        } else {
            // ...
        }
        return ResponseEntity.ok(params);
    }

但我建议将此方法分为两种不同消费价值的方法:

    @PostMapping(path = "/v2/{processDefinitionId}", consumes = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<String> startV2Json(@PathVariable String processDefinitionId,
                                        @RequestBody(required = false) String params) {
        return ResponseEntity.ok(params);
    }

    @PostMapping(path = "/v2/{processDefinitionId}", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
    public ResponseEntity<String> startV2UrlEncoded(@PathVariable String processDefinitionId,
                                        @RequestBody(required = false) String params) {
        return ResponseEntity.ok(params);
    }
 类似资料:
  • 我的SpringBoot应用程序通过REST HTTP调用外部服务,并通过客户端和方法实现。 到目前为止,客户机接收的始终是字符串主体->。前一段时间,我们调用的服务返回HTTP 202,但没有body,因此抛出以下异常: 。

  • 我有这些桌子: 我需要使用Spring构建一个RESTful Web服务,它接收JSON并在验证后将它们保存到数据库中。例如,在中有一条带有的记录。因此的JSON如下所示: 我想这样做: 我拥有以下实体: 在这种情况下,person中的doc总是为null,这很容易理解。但是如何实现我需要的行为呢?

  • 我刚刚开始使用Spring,我正在尝试在rest控制器中接收一个表单urlencoded POST body,但我一生都无法让它工作。这是我的“Hello World”式控制器: 我尝试了许多不同的变体,都有不同的错误。当从Postman接收到带有“text”参数的POST请求时,上面的特定配置会产生以下错误。 我看过许多其他关于这个主题的stackoverflow帖子,并试图实现它们的各种解决方

  • 我有一个基于Spring的Java应用程序,其中许多类使用以下自动生成的接口... 现在,接口只有一个实现,如下所示: 应用程序的工作原理与预期一致。Spring是快乐的。大家都很高兴。好吧,不是每个人。。。 所以,我想添加另一个具体的实现... 我们需要的是IOperatingSystemManager根据属性文件设置有条件地自动连接。(比如说..os=windows..基本上是一个任意字符串,

  • 我有麻烦与Spring Batch关于配置我的自定义作家这基本上是一个RepositoryItemWriter 我使用mapstruct将DTO映射到处理器内的实体。尽管这似乎是正确的,但我的作者实际上接收的是DTO项而不是实体,因此无法持久化它们。 关于批次结构的一些补充但不相关的信息。我从一个大文件中读取,将其分成较小的文件。然后我用多资源分区器分区我的步骤,处理器正在做一些格式控制,然后写入

  • 本文向大家介绍Spring mvc 接收json对象,包括了Spring mvc 接收json对象的使用技巧和注意事项,需要的朋友参考一下 本文通过代码实例介绍spring mvc 接收json数据的方法,具体详情如下所示: 接收JSON 使用 @RequestBody 注解前台只需要向 Controller 提交一段符合格式的 JSON,Spring 会自动将其拼装成 bean。 1)在上面的项