RestFul风格的开发

1、REST风格

根据REST风格对资源进行访问称为restful

描述模块通常使用复数表示某类资源

每个控制器方法前都有这两个注解:@RequestMapping(value = "/users/{id}/{name}",method = RequestMethod.DELETE)@ResponseBody;重复性太高

解决:

  1. 将@RequestMapping放在类上,定义所有方法共同的访问路径
  2. 使用@GetMapping @PostMapping @PutMapping @DeleteMapping代替
  3. 将ResponseBody提到类上面,让所有的方法都有@ResponseBody的功能;使用@RestController注解替换@Controller+@ResponseBody

例子:

  • http://localhost/users 查询全部用户信息 GET(查询)
  • http://localhost/users/1 查询指定用户信息 GET(查询)
  • http://localhost/users 添加用户信息 POST(新增/保存)
  • http://localhost/users 修改用户信息 PUT(修改/更新)
  • http://localhost/users/1 删除用户信息 DELETE(删除)
@RestController
public class UserController {
    @GetMapping(""/users/{id}/{name}"")
    public String getInfo(@PathVariable("id") Integer id,@PathVariable("name") String name) {
        return "{'module':'user delete',json}";
    }
}

2、一般风格

当前端的请求地址有参数时:http://localhost/users/1/lm

@Controller
public class UserController {
    @RequestMapping(value = "/save",method = RequestMethod.POST)
    @ResponseBody
    public String save(@RequestBody User user) {
        System.out.println("user save..."+user);
        return "{'module':'user save'}";
    }
    
	@RequestMapping(value = "/users/{id}/{name}",method = RequestMethod.DELETE)
    @ResponseBody
    public String delete(@PathVariable("id") Integer id,@PathVariable("name") String name) {
        System.out.println("user delete "+id+":"+name);
        return "{'module':'user delete',json}";
    }
}

3、注解说明

@RestController
  1. 基于SpringMVC的RESTful开发控制器类定义上方
  2. @Controller+@ResponseBody
@GetMapping @PostMapping @PutMapping @DeleteMapping
  1. 基于SpringMVC的RESTful开发控制器方法定义上方,设置当前控制器方法请求的访问路径与请求动作
  2. value(默认):请求访问路径
@PathVariable
  1. SpringMVC控制器方法的形参前面
  2. 绑定路径参数与处理器方法形参间的关系,要求路径参数名与形参名一一对应

4、依赖说明

jackson-databind
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.0</version>
</dependency>
  1. Jackson JSON处理库的一部分,用于在Java中处理JSON数据的工具包。
  2. 它提供一组类和方法,用于将Java对象转换为JSON格式,以及将JSON格式转换回Java对象;使用这个包,可以很方便地在Java应用程序中处理JSON数据,包括序列化和反序列化对象、处理JSON数据流等操作。

5、访问静态资源

pages\books.html

浏览器输入http://localhost/pages/books.html

SpringMVC拦截静态资源,SpringMVC根据地址去controller找对应的方法,找不到报404

解决:

  1. 对静态资源的访问,不要过springmvc,交给tomcat处理:配置SpringMVC,将静态资源进行放行
  2. 要使配置类生效需要修改配置类的扫描路径
 protected String[] getServletMappings() {
        return new String[]{"/"};    //http://localhost/pages/books.html满足这个规则
}
@Configuration   //设置静态资源访问过滤,当前类需要设置为配置类,并被扫描加载
public class SpringMvcSupport extends WebMvcConfigurationSupport {
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        //当访问/pages/????时候,从/pages目录下查找内容
        registry.addResourceHandler("/pages/**").addResourceLocations("/pages/");
        registry.addResourceHandler("/js/**").addResourceLocations("/js/");
        registry.addResourceHandler("/css/**").addResourceLocations("/css/");
        registry.addResourceHandler("/plugins/**").addResourceLocations("/plugins/");
    }
}
@Configuration
@ComponentScan({"com.itheima.controller","com.itheima.config"})
@EnableWebMvc
public class SpringMvcConfig {
}
@Configuration
@ComponentScan("com.itheima")
@EnableWebMvc
public class SpringMvcConfig {
}
posted @ 2024-03-27 21:46  燕子去了  阅读(14)  评论(0编辑  收藏  举报

Powered by .NET 8.0 on Kubernetes

我会翻山越岭,到每一个我想去的地方

...