【springboot】springmvc其他注解+RESTFull+集成redis

springboot中的springmvc其他注解

@RestController :相当于控制层类上加@Controller+方法上加@ResponseBody,意味着当前控制层类中所有的方法返回的是json对象

@GetMapping(value="/student"):相当于@RequestMapping(value="/student",method=RequestMethod.GET)

该注解通常在查询数据的时候使用

@PostMapping(value="/student"):相当于@RequestMapping(value="/student",method=RequestMethod.POST)

该注解通常在新增数据的时候使用

@DeleteMapping(value="/student"):相当于@RequestMapping(value="/student",method=RequestMethod.DELETE)

该注解通常在删除数据的时候使用

@PutMapping(value="/student"):相当于@RequestMapping(value="/student",method=RequestMethod.PUT)

该注解通常在更新数据的时候使用

(通常Post用的居多)

认识RESTFull

一种互联网软件架构设计的风格,但它并不是标准,它只是提出了一组客户端和服务器交互时的架构理念和设计原则,基于这种理念和原则设计的接口可以更简洁,更有层次,REST这个词,是 Roy Thomas Fielding 在他 2000 年的博士论文中提出的。任何的技术都可以实现这种理念,如果一个架构符合 REST 原则,就称它为 RESTFul 架构

比如我们要访问一个 http 接口:http://localhost:8080/boot/order?id=1021&status=1

采用 RESTFul 风格则 http 地址为:http://localhost:8080/boot/order/1021/1

举例:

@RestController
public class StudentController {


    @RequestMapping(value = "/student")
    public Object student(Integer id,Integer age) {
        Student student = new Student();
        student.setId(id);
        student.setAge(age);
        return student;
    }

//    @RequestMapping(value = "/student/detail/{id}/{age}")
    @GetMapping(value = "/student/detail/{id}/{age}")
    public Object student1(@PathVariable("id") Integer id,
                           @PathVariable("age") Integer age) {
        Map<String,Object> retMap = new HashMap<>();

        retMap.put("id",id);
        retMap.put("age",age);
        return retMap;
    }

//    @RequestMapping(value = "/student/detail/{id}/{status}")
    @DeleteMapping(value = "/student/detail/{id}/{status}")
    public Object student2(@PathVariable("id") Integer id,
                           @PathVariable("status") Integer status) {
        Map<String,Object> retMap = new HashMap<>();

        retMap.put("id",id);
        retMap.put("status",status);
        return retMap;
    }

    //以上代码student1和student2会出现请求路径冲突问题
    //通常在RESTful风格中方法的请求方式会按增删改查的请求方式来区分
    //修改请求路径
    //RESUful请求风格要求路径中使用的单词都是名称,最好不要出现动词

    @DeleteMapping(value = "/student/{id}/detail/{city}")
    public Object student3(@PathVariable("id") Integer id,
                           @PathVariable("city") Integer city) {
        Map<String,Object> retMap = new HashMap<>();

        retMap.put("id",id);
        retMap.put("city",city);
        return retMap;
    }

    @PostMapping(value = "/student/{id}")
    public String addStudent(@PathVariable("id") Integer id) {
        return "add student ID:" + id;
    }

    @PutMapping(value = "/student/{id}")
    public String updateStudent(@PathVariable("id") Integer id) {
        return "update Student ID:" +id;
    }
}
  • RESTful 原则

    ➢ 增 post 请求、删 delete 请求、改 put 请求、查 get 请求

    请求路径不要出现动词

    例如:查询订单接口

    /boot/order/1021/1(推荐)

    /boot/queryOrder/1021/1(不推荐)

    分页、排序等操作,不需要使用斜杠传参数

    例如:订单列表接口

    /boot/orders?page=1&sort=desc

    一般传的参数不是数据库表的字段,可以不采用斜杠

springboot集成redis

a.添加操作redis数据类型的依赖

<!--springboot集成Redis的起步依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

b.在springboot核心配置文件中添加redis的配置

spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=1234  
#没设置密码就不要写

controller

@Controller
public class SController {

    @Autowired
    private StudentService studentService;

    @RequestMapping(value="/put")
    public @ResponseBody Object put(String key,String value){
        studentService.put(key, value);
        return "成功放入";
    }

    @RequestMapping(value="/get")
    public @ResponseBody String get(){
        String value=studentService.get("utkvrjan");
        return value;
    }
}

service

public interface StudentService {

    void put(String key,String value);

    String get(String key);
}

serviceImpl

@Service
public class StudentServiceImpl implements StudentService {

    @Autowired
    private RedisTemplate<Object,Object> redisTemplate;


    @Override
    public void put(String key, String value) {
        redisTemplate.opsForValue().set(key,value);

    }

    @Override
    public String get(String key) {
        return (String)redisTemplate.opsForValue().get(key);
    }


}

RedisTemplate是spring集成redis配的对象

opsForValue(): ops是operations的缩写,opsForValue操作string类型,opsForZSet操作zset类型…

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值