使用RESTful风格编写用户增删改查模拟操作

三种参数接收方式的区别

@RequestParam 用于接收url地址传参或表单传参

@RequestBody 用于接收json数据

@PathVariable 用于接收路径参数,使用{参数名称}描述路径参数

java 复制代码
package com.wu.controller;

import com.wu.domain.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;


@Controller
public class UserController {

    @RequestMapping(value = "/users", method = RequestMethod.POST)
    @ResponseBody
    public String save(@RequestBody User user) {
        System.out.println("user save ==> " + user);
        return "{'module':'user save'}";
    }

    @RequestMapping(value = "/users/{id}", method = RequestMethod.DELETE)
    @ResponseBody
    public String delete(@PathVariable Integer id) {
        System.out.println("user delete ==> " + id);
        return "{'module':'user delete'}";
    }

    @RequestMapping(value = "/users", method = RequestMethod.PUT)
    @ResponseBody
    public String update(@RequestBody User user) {
        System.out.println("user update ==> " + user);
        return "{'module':'user update'}";
    }

    @RequestMapping(value = "/users/{id}", method = RequestMethod.GET)
    @ResponseBody
    public String getById(@PathVariable Integer id) {
        System.out.println("user getById ==> " + id);
        return "{'module':'user getById'}";
    }

    @RequestMapping(value = "/users", method = RequestMethod.GET)
    @ResponseBody
    public String getAll() {
        System.out.println("user getAll");
        return "{'module':'user getAll'}";
    }
}

以图书信息管理为例进行代码优化

@RestController注解
类型 :类注解
位置 :基于SpringMvc的RESTful开发控制器类定义上方
作用:设置当前控制器类为RESTful风格,等同于@Controller与@ResponseBody两个注解组合功能
RESTful快速开发
名称 :@GetMapping(GET) @PostMapping(POST) @PutMapping(PUT) @DeleteMapping(DELETE)
类型 :方法注解
位置 :基于SpringMVC的RESful开发控制器方法定义上方
作用:设置当前控制器方法请求访问路径与请求动作,每种对应一个请求动作

java 复制代码
package com.wu.controller;
import com.wu.domain.Book;
import org.springframework.web.bind.annotation.*;

//@Controller
//@ResponseBody
@RestController // 将上方两个注解合二为一
@RequestMapping("/books")
public class BookController {

//    @RequestMapping(method = RequestMethod.POST)
    @PostMapping
    public String save(@RequestBody Book book) {
        System.out.println("book save ==> " + book);
        return "{'module':'book save'}";
    }

//    @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
    @DeleteMapping("/{id}")
    public String delete(@PathVariable Integer id) {
        System.out.println("book delete ==> " + id);
        return "{'module':'book delete'}";
    }

//    @RequestMapping(method = RequestMethod.PUT)
    @PutMapping
    public String update(@RequestBody Book book) {
        System.out.println("book update ==> " + book);
        return "{'module':'book update'}";
    }

//    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    @GetMapping("/{id}")
    public String getById(@PathVariable Integer id) {
        System.out.println("book getById ==> " + id);
        return "{'module':'book getById'}";
    }

//    @RequestMapping(method = RequestMethod.GET)
    @GetMapping
    public String getAll() {
        System.out.println("book getAll");
        return "{'module':'book getAll'}";
    }
}
相关推荐
该用户已不存在7 分钟前
我的Python工具箱,不用加班的秘密
前端·后端·python
郑重其事,鹏程万里12 分钟前
commons-io
java
文心快码BaiduComate15 分钟前
新手如何高效使用 Zulu 智能体?从入门到提效全指南
前端·后端
G探险者15 分钟前
云原生时代下的 JVM 内存管理:为什么你的服务不会“自动扩容”?
后端·云原生
渣哥19 分钟前
还在写繁琐监听器?Spring @EventListener 注解让你代码瞬间简化
javascript·后端·面试
搞笑我们是认真的_______狗才写代码22 分钟前
技术总监:学着点,我们团队就缺这样的人才
后端
马尚来24 分钟前
掌握Kotlin编程,从入门到精通:视频教程
后端·kotlin
爱吃烤鸡翅的酸菜鱼25 分钟前
从零掌握贪心算法Java版:LeetCode 10题实战解析(上)
java·算法
yeyong25 分钟前
将所有的服务都放在里面做一个容器用supervisor管理进程 VS 用很多容器跑单独应用并集成一套,哪种更好?
后端
yeyong28 分钟前
在windows上如何编译出arm64架构可跑的go程序
后端