用于发布 JSON 的标准 spring mvc 控制器的 Katharsis 返回 400

Posted

技术标签:

【中文标题】用于发布 JSON 的标准 spring mvc 控制器的 Katharsis 返回 400【英文标题】:Katharsis with standard spring mvc controller for posting JSON returns 400 【发布时间】:2017-01-14 00:58:12 【问题描述】:

我已将 Katharsis 与 spring-boot (MVC + Security) 集成在一起,对此我感到非常高兴。

@SpringBootApplication
@Import(KatharsisConfigV2.class)
@Configuration
public class Application 
    public static void main(String[] args) 
        SpringApplication.run(Application.class, args);
    

我开始使用额外的 spring mvc 控制器来设置安全性来处理登录和注销方法。

但是使用 RequestBody 注释参数将 json 转换为 java 对象,我收到 400 响应,告诉我缺少所需的正文。

@RequestMapping(value = "/auth/signup", method = RequestMethod.POST)
public @ResponseBody AuthenticationResponse signup(
        @RequestBody AuthenticationRequest authenticationRequest) 
    ...

当我删除 Katharsis 配置的导入时,一切正常。

@SpringBootApplication
//@Import(KatharsisConfigV2.class)
@Configuration
public class Application 
    public static void main(String[] args) 
        SpringApplication.run(Application.class, args);
    

如何调整我的项目配置以允许基本的 spring 控制器接受标准 JSON?

提前致谢

【问题讨论】:

如果您不显示您的代码,没有人可以帮助您。 你有没有想过这个问题? 【参考方案1】:

response 的 "detail" 字段中的确切消息是什么? Katharsis-Spring 提供了不错的错误详细信息。这应该可以让您更好地了解到底出了什么问题。

请记住,JSON API 中的 POST 主体将 differ from how they look in regular Spring,例如您的有效负载中需要有一个"data" 字段。

您可能还需要在 application.properties 文件中配置 Katharsis。 Katharsis 无法处理请求,除非它是 configured properly。

希望这会有所帮助。

【讨论】:

以上是关于用于发布 JSON 的标准 spring mvc 控制器的 Katharsis 返回 400的主要内容,如果未能解决你的问题,请参考以下文章

在从 Spring MVC 作为 JSON 发送时动态忽略 Java 对象中的字段

REST - 使用 Spring MVC 返回创建的对象

JSON - Spring MVC:如何将 json 数据发布到 Spring MVC 控制器

Spring 之 注解实现返回json

带有 MVC 的 Spring 3 JSON

带有 JSON 的 Spring MVC 多部分请求