Springboot同时支持GET与POST请求及参数获取

该代码段定义了一个处理/sendMsg请求的API,支持GET和POST方法。它解析请求参数,校验图片URL和token,对图片URL进行编码,并在验证失败时返回错误信息。当所有验证成功后,会返回成功的响应。
摘要由CSDN通过智能技术生成
	@RequestMapping("/sendMsg",method = {RequestMethod.GET,RequestMethod.POST})
    @ApiApplication(isAuth = false)
    @ApiOperation("发送消息")
    public AjaxResult senMsg(HttpServletRequest request) throws IOException {
        String method = request.getMethod();
        MessageParam param = new MessageParam();
        if("POST".equals(method)){
            String postData = IOUtils.toString(request.getInputStream(), StandardCharsets.UTF_8);
            param = JSONObject.parseObject(postData,MessageParam.class);
        }
        if("GET".equals(method)){
            ServletRequestDataBinder binder = new ServletRequestDataBinder(param);
            binder.bind(request);
        }
        if(StringUtils.isNotBlank(param.getImgUrl())){
            if(!param.getImgUrl().contains("http")){
                return AjaxResult.error("请输入正确的图片地址");
            }
            param.setImgUrl(URLEncoder.encode(param.getImgUrl()));
        }
        if(StringUtils.isBlank(param.getToken())){
            return AjaxResult.error("token为空");
        }
		// 后续处理...
        return AjaxResult.success("成功");
    }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot中的Filter是一种拦截所有请求的方式,无论是GET请求还是POST请求都会被Filter拦截到。但是有时候会遇到Filter获取不到POST请求参数的情况,这时候需要检查一下请求头中的Content-Type是否是application/x-www-form-urlencoded。 如果Content-Type是application/x-www-form-urlencoded,则需要通过HttpServletRequest.getParameter()方法来获取请求参数。例如: ``` java public class MyFilter implements Filter { @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; // 获取请求参数 String param1 = request.getParameter("param1"); String param2 = request.getParameter("param2"); ... // 继续处理请求 chain.doFilter(request, response); } } ``` 如果Content-Type是application/json,则需要通过读取请求体来获取请求参数。例如: ``` java public class MyFilter implements Filter { @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; // 获取请求体 BufferedReader reader = request.getReader(); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line); } // 解析JSON参数 JSONObject json = JSONObject.parseObject(sb.toString()); String param1 = json.getString("param1"); String param2 = json.getString("param2"); ... // 继续处理请求 chain.doFilter(request, response); } } ``` 总之,要根据请求头中的Content-Type来确定获取POST请求参数的方法,否则会导致获取不到参数的情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值