【问题标题】:Spring - Rest controller handles json input as null stringSpring - Rest控制器将json输入处理为空字符串
【发布时间】:2018-02-03 18:41:13
【问题描述】:

在使用 facebook messenger api 时,我创建了一个简单的 REST 控制器

@RestController
public class ChatController 
{
    private static final Logger LOG = LoggerFactory.getLogger(ChatController.class);

    @RequestMapping(value="/webhook", method=RequestMethod.POST, consumes="application/json")
    public String onWebhookEvent(String event)
    {
        LOG.info("Received event {}",event);
        return "test";
    }
}

但是,当我将以下 json 发布到 /webhook 端点时,event 输入被记录为 null ("Received event null")

{"object":
    "page",
    "entry":[
        {
          "id":43674671559,
          "time":1460620433256,
          "messaging":[
            {"sender":{"id":123456789},
             "recipient":{"id":987654321},
             "timestamp":1460620433123,
             "message":{"mid":"mid.1460620432888:f8e3412003d2d1cd93","seq":12604,"text":"Testing Chat Bot .."}
            }
          ]
        }
    ]
}

为什么会这样,我该如何解决?由于 json 是一种序列化机制,我假设它将作为字符串呈现给 onWebhookEvent 方法。

感谢您的帮助

【问题讨论】:

  • 在事件字符串之前尝试 requestbody 注释?它应该将 http 正文映射到字符串。

标签: java json spring rest


【解决方案1】:

如果您希望将请求的正文绑定到参数,请使用@RequestBody

顺便说一句,返回一个ResponseEntity 对象,因为它是您想要返回的任何内容的包装器,并且您可以指定其他信息(例如,响应的标头)

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 2020-12-06
    • 1970-01-01
    • 2014-06-28
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    相关资源
    最近更新 更多