zoukankan      html  css  js  c++  java
  • restFull api接口

    RestFull api接口

      前后端分离开发的接口规范

      什么是RestFull 是目录比较流行的api设计规范

      注:restfull api规范应用场景,前后端分离的项目中

    数据接口的现场 例如:

      /users/999 获取ID为999的信息

      /users/list  获取所有的用户信息

      /users/add  打开添加的页面

      /users/save 新增数据

      /users/edit 打开修改的页面

      /users/save 根据表单是否有主键的值判断是否有更新

      /users/del/999  删除id 为999的信息

    Restfull风格的api接口,通过不同的请求方式来区分不同的操作

      get /users/999  获取id为999的信息

      get /users  获取所有的用户信息

      post /users 新增一条记录

      put /users 修改信息

      patch /users 增量的修改

      delete /users/999 删除id为999的信息

    如何创建restfull风格的数据接口

      注:springmvc对restfull风格的api有很好的支持

    风格如下

    package com.seecen.sc1904springboot.controller;
    
    import com.seecen.sc1904springboot.pojo.User;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * get /users/999  获取id为999的信息
     * get /users  获取所有的用户信息
     * post /users 新增一条记录
     * put /users 修改信息
     * patch /users 增量的修改
     * delete /users/999 删除id为999的信息
     */
    @Controller
    @RequestMapping("users")
    public class UserController {
    
        //get users/9999
        @RequestMapping(value = "/{id}", method = RequestMethod.GET)
        @ResponseBody
        public User getUserById(@PathVariable("id") Integer id) {
            //持久化操作:根据id获取指定记录并返回
            User user = new User();
            user.setUserId(id);
            user.setUserName("张三");
            return user;
        }
    
        //get /users  获取所有的用户信息
        @RequestMapping(value = "",method = RequestMethod.GET)
        @ResponseBody
        public List<User> getAllUsers(){
            List<User> list = new ArrayList<>();
            User user = new User();
            user.setUserId(1);
            user.setUserName("张三");
            list.add(user);
            return list;
        }
    
    //    post /users 新增一条记录
        @RequestMapping(value = "",method = RequestMethod.POST)
        @ResponseBody
        public User addNewUser(User user){
            //新增一条记录并获取user对象
            return user;
        }
    
    //    put /users 修改信息
        @RequestMapping(value = "",method = RequestMethod.PUT)
        @ResponseBody
        public User updateUser(User user){
            return user;
        }
    
        //patch /users 增量的改
        @RequestMapping(value = "",method = RequestMethod.PATCH)
        @ResponseBody
        public User patchUser(User user){
            return user;
        }
    
        //delete /users/999
        @RequestMapping(value = "/{id}",method = RequestMethod.DELETE)
        @ResponseBody
        public User del(@PathVariable("id") Integer id){
            return new User();
        }
    }

    Postman测试

      

       

    Swaggerui框架测试

    1. 导入依赖包
      <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>2.8.0</version>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>2.8.0</version>
            </dependency>

      2.编写配置文件(JAVA类的方式进行配置

        Java类来管理bean对象

        通过@Bean注解来管理bean对象 (必须要配置

    package com.seecen.sc1904springboot.config;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.service.Contact;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    //@Configuration 就个类是一个spring框架的配置文件
    //spring框架的配置文件主要体现的是创建什么bean对象
    @Configuration//spring配置文件,xml, java类来体现配置信息
    @EnableSwagger2
    public class Swagger2 {
        /**
         * 创建API应用
         * apiInfo() 增加API相关信息
         * 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
         * 本例采用指定扫描的包路径来定义指定要建立API的目录。
         *
         * @return
         */
        @Bean
        public Docket createRestApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    .apis(RequestHandlerSelectors
                            .basePackage("com.seecen.sc1904springboot.controller"))
                    .paths(PathSelectors.any())
                    .build();
        }
    
        /**
         * 创建该API的基本信息(这些基本信息会展现在文档页面中)
         * 访问地址:http://项目实际地址/swagger-ui.html
         * @return
         */
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    .title("Spring Boot中使用Swagger2构建RESTful APIs")
                    .description("Spring Boot中使用Swagger2构建RESTful APIs")
                    .termsOfServiceUrl("http://www.geek5.cn")
                    .contact(new Contact("calcyu","http://geek5.cn","hi@geek5.cn"))
                    .version("1.0")
                    .build();
        }
    }

     注解

        @Api:用在类上,说明该类的作用。

        @ApiOperation:注解来给API增加方法说明。

        @ApiImplicitParams : 用在方法上包含一组参数说明。

        @ApiImplicitParam:用来注解来给方法入参增加说明。

        @ApiResponses:用于表示一组响应

        @ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息

           code:数字,例如400

            message:信息,例如"请求参数没填好"

            response:抛出异常的类   

        @ApiModel:描述一个Model的信息(一般用在请求参数无法使用@ApiImplicitParam注解进行描述的时候)

        @ApiModelProperty:描述一个model的属性

        注意:@ApiImplicitParam的参数说明

    控制层controller(上面Swagger2类中 这个包下所有控制层的方法都会获取

    package com.seecen.sc1904springboot.controller;
    
    
    import com.seecen.sc1904springboot.pojo.RESTfullResult;
    import com.seecen.sc1904springboot.pojo.User;
    
    import com.seecen.sc1904springboot.service.UserService;
    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiImplicitParam;
    import io.swagger.annotations.ApiOperation;
    import io.swagger.models.auth.In;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
    
    
    
    @RestController    //  返回的所有都是json的
    @RequestMapping("/user")
    @Api("用户的增删改查功能")
    public class UserController2 {
    
        @Autowired
        private UserService userService;
    
    //    emp/insert获取用户信息     @PathVariable("empno")Integer empno
    
            @GetMapping("/{id}")
            @ApiOperation("根据id主键返回用户信息")
            @ApiImplicitParam(name = "id",value = "用户编号",required = true,dataType = "json")
            public RESTfullResult<User> getAllUsers(@PathVariable("id")Integer id) {
                User list = userService.selectByPrimaryKey(id);
                return RESTfullResult.success(list);
            }
    
    }
    项目开始运行了  访问测试地址:http://项目实际地址/swagger-ui.html

    然后就可以对控制层的所有方法进行测试了
       
    测一个添加方法吧
        

     执行后

    执行成功了

    数据库看看

    ok

    这就是Swaggerui框架测试

  • 相关阅读:
    全站生成静态文件的通用方法
    Web.config配置文件详解(新手必看)
    iis7/7.5设置上传文件最大大小
    C# 中的常用正则表达式总结
    60款很酷的 jQuery 幻灯片演示和下载
    DataReader记录生成多列的表格
    正则表达式
    博客转移
    ASP.Net学习之常用SQL存储过程(1)
    遍历Request的信息
  • 原文地址:https://www.cnblogs.com/lin02/p/11485165.html
Copyright © 2011-2022 走看看