• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Restful 和amp;controller层的简化

武飞扬头像
lwj_07
帮助1

补充知识:

学新通

一、REST简介

学新通

 REST还有一个问题就是:

如访问地址 http://localhost/user 既可以表示为保存用户的路径,又可以表示添加用户信息的路径,也就是说:一个REST风格描述的资源访问路径可以代表几个不同的访问数据库资源信息的路径

因此、我们应该怎么精确的区分到底访问的是哪个路径下的资源呢:使用行为动作(请求方式)区分

学新通

二、restful入门

思路也就如下所示: 

其实也就下面要点:

设置http请求动作(也就是:method是post请求还是get还是......)

路径参数{id}

@PathVariable注解

学新通

总体代码如下所示:

ServletContainersInitConfig:

学新通

SpringMvcConfig:

学新通

 UserController:

  1.  
    package com.itheima.controller;
  2.  
     
  3.  
    import com.itheima.domain.User;
  4.  
    import org.springframework.stereotype.Controller;
  5.  
    import org.springframework.web.bind.annotation.*;
  6.  
     
  7.  
    @Controller
  8.  
    public class UserController {
  9.  
     
  10.  
    //设置当前请求方法为POST,表示REST风格中的添加操作
  11.  
    @RequestMapping(value = "/users/{id}",method = RequestMethod.POST)
  12.  
    @ResponseBody
  13.  
    public String save(@PathVariable Integer id){
  14.  
    System.out.println("user save..." id);
  15.  
    return "{'module':'user save'}";
  16.  
    }
  17.  
     
  18.  
    //设置当前请求方法为DELETE,表示REST风格中的删除操作
  19.  
    //@PathVariable注解用于设置路径变量(路径参数),要求路径上设置对应的占位符,并且占位符名称与方法形参名称相同
  20.  
    @RequestMapping(value = "/users/{id}",method = RequestMethod.DELETE)
  21.  
    @ResponseBody
  22.  
    public String delete(@PathVariable Integer id){
  23.  
    System.out.println("user delete..." id);
  24.  
    return "{'module':'user delete'}";
  25.  
    }
  26.  
     
  27.  
    //设置当前请求方法为PUT,表示REST风格中的修改操作
  28.  
    @RequestMapping(value = "/users",method = RequestMethod.PUT)
  29.  
    @ResponseBody
  30.  
    public String update(@RequestBody User user){ // @RequestBody注解:接收前端JSON数据
  31.  
    //格式的注解(看JSON那边的笔记)
  32.  
    System.out.println("user update..." user);
  33.  
    return "{'module':'user update'}";
  34.  
    }
  35.  
     
  36.  
    //设置当前请求方法为GET,表示REST风格中的查询操作
  37.  
    //@PathVariable注解用于设置路径变量(路径参数),要求路径上设置对应的占位符,并且占位符名称与方法形参名称相同
  38.  
    @RequestMapping(value = "/users/{id}" ,method = RequestMethod.GET)
  39.  
    @ResponseBody
  40.  
    public String getById(@PathVariable Integer id){
  41.  
    System.out.println("user getById..." id);
  42.  
    return "{'module':'user getById'}";
  43.  
    }
  44.  
     
  45.  
    //设置当前请求方法为GET,表示REST风格中的查询操作
  46.  
    @RequestMapping(value = "/users",method = RequestMethod.GET)
  47.  
    @ResponseBody
  48.  
    public String getAll(){
  49.  
    System.out.println("user getAll...");
  50.  
    return "{'module':'user getAll'}";
  51.  
    }
  52.  
     
  53.  
    }
学新通

前端用REST风格进行访问后端路径下的资源(就拿delete为例):

学新通

 学新通

三、restful快速开发(简化)

简化1:下面的代码有什么特点:

        路径/books要重复的写,实际开发中会比较麻烦

学新通

 因此我们在springmvc处理客户端请求的时候就处理过该重复问题:把/books路径直接提出取来,如下所示:

学新通

简化2:把重复的/books路径简化之后,分析下面代码还有什么特点:

        @ResponseBody 返回体的注解也要每个方法都要写,也是比较麻烦的,因此也可以把该注解提到类上面

学新通

 简化后:(注意:如果用这种简化方式,那么就要保证每个方法都有响应给前端的返回值,因为该@ResponseBody注解就是响应给前端返回值数据的注解

学新通

简化3:简化下面所示的注解(把两个注解合成一个注解,功能还是相同的)

学新通

 用@RestController注解简化该两个注解

学新通

 简化4:简化method动作:

学新通

然后就可以让前端进行路径请求了(以delete为例子):

学新通

 学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgejejh
系列文章
更多 icon
同类精品
更多 icon
继续加载