开发者社区> 问答> 正文

jfinal 怎么实现请求的接口访问方式? 400 报错

jfinal 怎么实现请求的接口访问方式? 400 报错

比如某个接口只能使用post或者get。

@JFinal


展开
收起
爱吃鱼的程序员 2020-05-31 00:26:57 699 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    jfinal 里面有对应的拦截器:

    package com.jfinal.ext.interceptor;
    
    import com.jfinal.aop.Interceptor;
    import com.jfinal.aop.Invocation;
    import com.jfinal.core.Controller;
    
    /**
     * Accept POST method only.
     */
    public class POST implements Interceptor {
    	public void intercept(Invocation inv) {
    		Controller controller = inv.getController();
    		if ("POST".equalsIgnoreCase(controller.getRequest().getMethod().toUpperCase()))
    			inv.invoke();
    		else
    			controller.renderError(404);
    	}
    }
    

    直接在对应的方法上使用

    @Before(POST.class)

    就行了.

    ######
    public class POST_METHOD implements Interceptor {
    	private LogApi logApi = new LogApi();
    	@Override
    	public void intercept(Invocation ai) {
    		Controller controller = ai.getController();
    		if ("POST".equalsIgnoreCase(controller.getRequest().getMethod().toUpperCase()))
    			ai.invoke();
    		else {
    			controller.renderJson(logApi.fail("只能POST方法访问!"));
    		}
    	}
    }



    ######这种方式不好,方法名都限死了,不提昌用这种方式,这虽然是JFinal原生实现,用注解的方式 @Post @Get ,参考Spring的方式好点,一个注解搞定,不入侵方法名######
    public class GET_METHOD implements Interceptor {
    	private LogApi logApi = new LogApi();
    	@Override
    	public void intercept(Invocation ai) {
    		Controller controller = ai.getController();
    		if ("GET".equalsIgnoreCase(controller.getRequest().getMethod().toUpperCase()))
    			ai.invoke();
    		else{
    			controller.renderJson(logApi.fail("只能GET方法访问!"));
    		}
    	}
    }



    2020-05-31 00:26:58
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
fibjs 模块重构从回调到协程--陈垒 立即下载
JAVA反射原理以及一些常见的应用 立即下载
Java Spring Boot开发实战系列课程【第16讲】:Spring Boot 2.0 实战Apache Kafka百万级高并发消息中间件与原理解析 立即下载

相关实验场景

更多