欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用SpringMVC开发Restful风格的API

程序员文章站 2022-07-15 16:09:37
...

1、编写针对RestfulAPI的测试用例

  • 添加测试的依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    
  • 编写测试用例

    @RunWith(SpringRunner.class)//如何运行测试用例
    @SpringBootTest//表明这个类是一个测试类
    public class UserControllerTest {
    
        /**
         * Spring IOC 容器
         */
        @Autowired
        private WebApplicationContext wac;
    
        /**
         * 虚拟一个MVC运行环境,不会真正地启动tomcat
         */
        private MockMvc mockMvc;
    
        /**
         * 在每一个测试方法执行之前先执行,实例化一个mockMVC
         * @throws Exception
         */
        @Before
        public void setUp() throws Exception {
    
            mockMvc=MockMvcBuilders.webAppContextSetup(wac).build();
        }
    
        @Test
        public void whenQuerySuccess() throws Exception {
            mockMvc.perform(MockMvcRequestBuilders.get("/user")
                    .contentType(MediaType.APPLICATION_JSON_UTF8))
                    .andExpect(MockMvcResultMatchers.status().isOk())
                    .andExpect(MockMvcResultMatchers.jsonPath("$.length()").value(3));
        }
    
    }
    

    参考 https://www.cnblogs.com/rancho-blog/p/7011176.html

2、使用注解声明RestfulAPI

get请求相关的注解

  • @RestController

    等价于@[email protected] 表明此Controller提供RestAPI
    
  • @RequestMapping及其变体

    映射http请求url到java方法
    
  • @RequestParam

    映射请求参数到java方法的参数
    
  • @PageableDefault

    指定分页参数的默认值
    需要依赖spring-data
    
     <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-commons</artifactId>
    </dependency>
    
  • @PathVariable

    映射url片段到java方法的参数中
    
    在url声明中使用正则表达式
    
  • @JsonView控制json的内容输出

    1. 使用接口来声明多个视图
    2. 在值对象的get方法中指定视图
    3. 在Controller方法上指定视图
  • json-path的使用

    官方文档
    https://github.com/json-path/JsonPath

post请求相关的注解

  • @RequestBody 映射请求体到java方法的参数
  • 日期类型的处理

    后台统一为时间戳,具体的展示由不同的客户端进行展示
    
  • @Valid 注解和BindingResult 验证请求参数的合法性并校验结果

    1. 常用的验证注解
    2. 自定义消息
    3. 自定义校验注解

    参考https://www.cnblogs.com/mr-yang-localhost/p/7812038.html