SpringBoot - MappingJackson2HttpMessageConverter 功能增强:添加 jsonp 请求响应(新)
发布日期:2021-06-30 17:03:57 浏览次数:2 分类:技术文章

本文共 1904 字,大约阅读时间需要 6 分钟。

网上充斥着 类似(下面) 的无脑回答

@ControllerAdvice(basePackages = "com.controller")public class Jsonp extends AbstractJsonpResponseBodyAdvice {
public Jsonp() {
//构造函数 super("callback","jsonp"); }}

然而 AbstractJsonpResponseBodyAdvice 这个类 spring 官方找废弃了。

(可能考虑到 jsonp 这个技术 有点 low ,迟早要淘汰把)


但是,奈何不了我们可爱的前端喜欢用啊。

在这里插入图片描述

功能还是要实现的。(下面)

就是用 RequestContextHolder 这个 ThreadLocal 获得当前线程的 request

判断一下,有需要就做个 字符串拼接

package cn.test.config;import java.io.IOException;import javax.servlet.http.HttpServletRequest;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;import org.springframework.util.StringUtils;import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.context.request.ServletRequestAttributes;import com.fasterxml.jackson.core.JsonGenerator;@Configurationpublic class JsonpConfig {
@Bean public MappingJackson2HttpMessageConverter getMappingJackson2HttpMessageConverter() {
return new MappingJackson2HttpMessageConverter() {
// 做jsonp的支持的标识,在请求参数中加该参数 private final static String CALLBACK = "callback"; // 获取callback参数 private String parseCallbackParam() {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder .currentRequestAttributes()).getRequest(); return request.getParameter(CALLBACK); } @Override protected void writePrefix(JsonGenerator generator, Object object) throws IOException {
String callback = parseCallbackParam(); if (!StringUtils.isEmpty(callback)) generator.writeRaw(callback + "("); } @Override protected void writeSuffix(JsonGenerator generator, Object object) throws IOException {
String callback = parseCallbackParam(); if (!StringUtils.isEmpty(callback)) generator.writeRaw(")"); } }; }}

转载地址:https://lawsssscat.blog.csdn.net/article/details/104759963 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:RabbitMQ
下一篇:Spring AOP - AspectJ

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月19日 12时42分34秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章