SpringMVC-Rest style

1. Introduction

REST (Representational State Transfer), representational state transfer, is a software architecture style. When we want to represent a network resource, we can use two methods:

Traditional style resource description form

  • http://localhost/user/getById?id=1 Query user information with id 1
  • http://localhost/user/saveUser Save user information

REST style description form

  • http://localhost/user/1
  • http://localhost/user

So the advantages of REST are:

  • Hide the access behavior of resources. It is impossible to know what operations are performed on the resources through the address.
  • Simplify writing

Commonly used requests: GET, POST, PUT, DELETE.

  • Sending a GET request is used to make queries
  • Sending a POST request is used to add new
  • Sending a PUT request is used to make changes
  • Sending a DELETE request is used to delete

2. Specific code

Original implementation:

//@Controller
//@ResponseBody配置在类上可以简化配置,表示设置当前每个方法的返回值都作为响应体
//@ResponseBody
@RestController //使用@RestController注解替换@Controller与@ResponseBody注解,简化书写
@RequestMapping("/books")
public class BookController {

// @RequestMapping( method = RequestMethod.POST)
@PostMapping //使用@PostMapping简化Post请求方法对应的映射配置
public String save(@RequestBody Book book){
System.out.println("book save..." + book);
return "{'module':'book save'}";
}

// @RequestMapping(value = "/{id}" ,method = RequestMethod.DELETE)
@DeleteMapping("/{id}") //使用@DeleteMapping简化DELETE请求方法对应的映射配置
public String delete(@PathVariable Integer id){
System.out.println("book delete..." + id);
return "{'module':'book delete'}";
}

// @RequestMapping(method = RequestMethod.PUT)
@PutMapping //使用@PutMapping简化Put请求方法对应的映射配置
public String update(@RequestBody Book book){
System.out.println("book update..."+book);
return "{'module':'book update'}";
}

// @RequestMapping(value = "/{id}" ,method = RequestMethod.GET)
@GetMapping("/{id}") //使用@GetMapping简化GET请求方法对应的映射配置
public String getById(@PathVariable Integer id){
System.out.println("book getById..."+id);
return "{'module':'book getById'}";
}

// @RequestMapping(method = RequestMethod.GET)
@GetMapping //使用@GetMapping简化GET请求方法对应的映射配置
public String getAll(){
System.out.println("book getAll...");
return "{'module':'book getAll'}";
}
}

Updated:

//标准REST风格控制器开发
@RestController
@RequestMapping("/books")
public class BookController2 {

    @PostMapping //添加
    public String save(@RequestBody Book book){
        System.out.println("book save..." + book);
        return "{'module':'book save'}";
    }

    @DeleteMapping("/{id}")
    public String delete(@PathVariable Integer id){
        System.out.println("book delete..." + id);
        return "{'module':'book delete'}";
    }

    @PutMapping //修改
    public String update(@RequestBody Book book){
        System.out.println("book update..."+book);
        return "{'module':'book update'}";
    }

    @GetMapping("/{id}") //get是查询
    public String getById(@PathVariable Integer id){
        System.out.println("book getById..."+id);
        return "{'module':'book getById'}";
    }

    @GetMapping
    public String getAll(){
        System.out.println("book getAll...");
        return "{'module':'book getAll'}";
    }
}

Note: Add the @EnableWebMvc annotation to the SpringConfig configuration class. It is currently used to parse json format. This annotation has many functions.


@Configuration
@ComponentScan("com.itheima.controller")
@EnableWebMvc  
public class SpringMvcConfig {
}

Guess you like

Origin blog.csdn.net/m0_61395860/article/details/133388198