• jeecg的开发api接口之旅(http)


    一、接口测试工具

    1、postman下载地址:https://download.csdn.net/download/qq_35792159/11898005

    2、谷歌浏览器插件:https://www.cnblogs.com/guohu/p/11111911.html

    二、第一次测试成功

      1、模仿系统的登录接口,在登陆成功页面的F12查看接口地址

      2、在postman里测试,发现返回的是jsp页面,本来想偷懒不用写接口的,看来还是需要自己写。

      3、于是模仿系统里的登录接口,根据客户要求的字段写了一个简单的登陆接口,结果在访问的时候被拦截了

      4、在JEECG的官方文档的疑难解答里有排除拦截的设置:http://www.jeecg.org/forum.php?mod=viewthread&tid=1830&extra=page%3D1

      在spring-mvc.xml中以下位置添加了自己的地址:

       然后就可以使用http://localhost:8080/项目名/appController.do?appLogin&参数测试成功了

    三,出现问题,修改再次测试

      在我请求网址里,方法是以参数的形式请求的,给客户测试是发现无法请求成功。再看看以前别人给自己的接口中好像都是http://localhost:8080//app/method这种的

      1、研究@RequestMapping

      开发者需要在控制器内部为每一个请求动作开发相应的处理方法。org.springframework.web.bind.annotation.RequestMapping 注解类型指示Spring用哪一个类或方法处理请求动作,该注解可用于类和方法。
      @RequestMapping可以用来注释一个控制器类,在这种情况下,所有方法都将映射为相对于类级别的请求,表示该控制器处理的所有请求都被映射到value属性所指示的路径下 参数参数

      参数介绍参考网址:https://blog.csdn.net/qq_36285124/article/details/54289312

      我只用到了value和params两个参数,所以就记录下这两个吧。

    •   value的使用
    @RequestMapping(value="list")
        public String getEmployeeData(ModelAndView mav,HttpServletRequest request,HttpServletResponse response){
            System.out.println("============");
            return "test";
        }

      访问的地址可以是/xx项目名/xxcontroller名/list

    • params的使用
    @RequestMapping(value="list",params="one",method=RequestMethod.GET)
        public String getEmployeeData(ModelAndView mav,HttpServletRequest request,HttpServletResponse response){
            System.out.println("============");
            return "test";
        }

      这种方式如果两个方法的value值相同,只需要加上参数one即可区别,访问的地址为/xx项目名/xxcontroller名/list?one

      或者

    @RequestMapping(params="list",method=RequestMethod.GET)
        public String getEmployeeData(ModelAndView mav,HttpServletRequest request,HttpServletResponse response){
            System.out.println("============");
            return "test";
        }

      这种方式要访问该方法的地址为:/xx项目名/xxcontroller名?list,没错,这里没有方法名,list只是参数。

      2、一开始以为换了参数使用value,还是像之前的配置呢样配置过滤,结果却发现不管怎么配置,都是无法找到网页。

      3、请教了一个使用这个框架很熟练的大神,才知道应该在web.xml中配置

     <!-- API开放接口配置 -->
        <servlet>
            <servlet-name>APISpringMvc</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <description>spring mvc 配置文件</description>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath*:spring-mvc.xml</param-value>
            </init-param>
        </servlet>
        <servlet-mapping>
            <servlet-name>APISpringMvc</servlet-name>
         <url-pattern>/appController/*</url-pattern>
    </servlet-mapping>

      备注:最好不要用<url-pattern>/</url-pattern>,可能会导致其他页面被拦截

      4、测试源码:

    @Controller
    @RequestMapping("/appController")
    public class AppController {
        
                // 设置方法下的子路经
          
              @JAuth(auth=Permission.SKIP_AUTH)//放开权限
              
              @RequestMapping("/method")
              
              @ResponseBody 
              public String helloworld() {
              
              return "helloWorld";
              
              }
    }    
    • 请求网址:http://localhost/项目名/appController/method
    • @JAuth(auth=Permission.SKIP_AUTH)的作用是设置不让系统拦截请求
    • @ResponseBody 的使用和不使用的区别:不使用的话只能返回界面,无法返回数据,像例子中的请求是无法返回的。

    四、拓展

    1、@RequestMapping @ResponseBody 和 @RequestBody 注解的用法与区别

    2、使用框架时,在web.xml中配置servlet时,拦截请求/和/*的区别。

    3、Java测试接口,参数为对象的简单测试方式   (这个我一开始有用过,但是后来发现好像不用也可以直接传参数,留着下次看)

    4、@ResponseBody是干嘛的,作用是什么?

    
    
    
  • 相关阅读:
    Linux系统性能优化
    Linux内核模块
    Linux守护进程的启动方法
    已有的游戏如何快速稳定迁移到云上?
    项目重构--使用策略模式
    设计模式学习--装饰者模式(Decorator Pattern)
    C#/ASP.NET应用程序配置文件app.config/web.config的增、删、改操作
    Resharper上手指南
    ReSharper 配置及用法(转)
    使用线程新建WPF窗体(公用进度条窗体)
  • 原文地址:https://www.cnblogs.com/congcongdi/p/11720790.html
Copyright © 2020-2023  润新知