SpringMVC:RESTful

RESTful

RESTful(RESTful Web Services)一种架构风格,表述性状态转移,它不是一个软件,也不是一个标准,而是一种思想,不依赖于任何通信协议,但是开发时要成功映射到某协议时也需要遵循其标准,但不包含对通信协议的更改。

特征

1、通过url地址来标识资源,系统中的每个对象或资源都可以通过其url地址来获取

2、统一接口,显式地使用HTTP方法,来进行crud映射

  • 创建资源使用POST
  • 删除资源使用DELETE
  • 更新资源使用PUT
  • 检索资源使用GET

3、资源多重反映,通过url地址访问的每个资源都可以根据客户端的规定进行返回,例:JSON、XML

RESTful服务适用web应用中创建服务的API,将资源以JSON或XML等数据格式进行暴露,从而可以更方便的让客户端进行调用。

基于SpringMVC的RESTful服务

在SpringMVC中对RESTful支持,主要通过注解来实现

@Controller:声明一个处理请求的控制器

@RequestMapping:请求映射地址到对应的方法,该注解又可以分为一下几种类型:

@GetMapping

@PostMpping

@PutMapping

@DeleteMapping

@PatchMapping

@ResponsrBody:响应内容转换为JSON格式

@RequestBody:请求内容转换为JSON格式

@RestContrller:等同@Controller+@ResponsrBody

整体API设计(基于用户管理模块)

localhost:8080/user:获取所有用户

localhost:8080/user/{id}:根据ID获取该用户信息

localhost:8080/insert:保存用户信息

localhost:8080/update:更新用户信息

localhost:8080/delete/{id}:根据用户ID删除用户

localhost:8080/user/from:获取创建用户表单

localhost:808/update/{id}:根据ID获取用户信息

@RestController
@RequestMapping("/user")
public class UserController extends Thread {

    private static final String Void = null;
    @Autowired
    private UserService userService;

    /**
     * 获取用户列表
     *
     * @param model
     * @return
     */
    @GetMapping
    public ModelAndView list(Model model) {
        model.addAttribute("list", userService.findAll());
        model.addAttribute("title", "用户管理");
        return new ModelAndView("user/list", "userModel", model);
    }

    /**
     * 根据Id获取用户信息
     *
     * @param id
     * @param model
     * @return
     */
    @GetMapping("{id}")
    public ModelAndView view(@PathVariable("id") int id, Model model) {
        User user = userService.findById(id);
        model.addAttribute("user", user);
        model.addAttribute("title", "查看用户");
        return new ModelAndView("user/view", "userModel", model);
    }

    /**
     * 创建用户表单
     *
     * @param model
     * @return
     */
    @GetMapping("/form")
    public ModelAndView form(Model model) {
        model.addAttribute("user", new User());
        model.addAttribute("title", "创建用户");
        return new ModelAndView("user/form", "userModel", model);
    }

    /**
     * 保存用户
     *
     * @param user
     * @param model
     * @return
     */
    @PostMapping("insert")
    public ModelAndView insert(User user, Model model) {
        user.setName("name");
        user.setPassword("000000");
        boolean flag = userService.addUser(user);
        if (flag == true) {
            return new ModelAndView("redirect:/user");
        } else {
            return null;
        }
    }

    /**
     * 更新用户
     *
     * @param user
     * @param model
     * @return
     */
    @PutMapping("update")
    public ModelAndView update(User user, Model model) {
        boolean flag = userService.update(user);
        if (flag == true) {
            return new ModelAndView("redirect:/user");
        } else {
            return null;
        }
    }

    /**
     * 根据Id删除用户
     *
     * @param id
     * @param model
     * @return
     */
    @DeleteMapping(value = "delete/{id}")
    public ModelAndView delete(@PathVariable("id") int id, Model model) {
        boolean flag = userService.deleteById(id);
        if (flag == true) {
            return new ModelAndView("redirect:/user");
        } else {
            return null;
        }
    }

    /**
     * 根据Id获取用户信息
     *
     * @param id
     * @param model
     * @param user
     * @return
     */
    @GetMapping("/form")
    public ModelAndView update(@PathVariable("id") int id, Model model, User user) {
        user = userService.findById(id);
        model.addAttribute("user", user);
        model.addAttribute("title", "修改信息");
        return new ModelAndView("user/update", "userModel", model);
    }
}

发布了202 篇原创文章 · 获赞 37 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/lovecuidong/article/details/105229196