REST风格介绍、restful使用案例

181 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一 REST风格介绍

概念

REST : Representational State Transfer (表现形式状态转换)

REST风格: 就是访问网络资源的格式

restful: 根据rest风格对资源进行访问叫做restful

restful开发: 就是你要用rest风格进行开发

REST风格优点

  • 隐藏了访问行为  
  • 书写简化

1 传统风格和REST风格比较

传统风格

  • 访问资源时,比如查询,路径会显示getById,保存,路径会显示saveUser

  • 根据访问路径一眼就可以看出访问行为。

REST风格

  • 通过路径 + 访问方式 才可知道 访问行为

  • 但如上的访问方式和路径不是必须的约束,是可以打破的(但99%都按照rest风格写了)

  • 注意:路径里模块的名称通常使用复数

2 REST风格增删改查路径的表示

二 案例

  操作   访问方式    访问路径

    POST    http://localhost:8080/users
    DELETE  http://localhost:8080/users/1
    PUT     http://localhost:8080/users
查一    GET    http://localhost:8080/users/1
查所有 GET   http://localhost:8080/users

要点:

1 设定http请求动作(访问方式):@PostMapping、@DeleteMapping、@PutMapping、@GetMapping
2 设定请求参数(访问路径):形参上加@PathVariable注解,路径上要有参数的占位

备注:

@RestController = @Controller + @ResponseBody

@PostMapping = @RequestMapping(method = RequestMethod.POST)

代码

package com.qing.controller;

import com.qing.domain.User;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/users")
public class UserController {

    //增	POST	http://localhost:8080/users
    @PostMapping
    public String save(User user) {
        System.out.println("save success"+user);
        return "save success";
    }

    //删	DELETE  http://localhost:8080/users/1
    //@PathVariable : 用于绑定url的占位符,restful风格
    @DeleteMapping("/{id}")
    public String detete(@PathVariable Integer id) {
        System.out.println("detete " + id + " success");
        return "detete " + id + " success";
    }

    //改	PUT     http://localhost:8080/users
    @PutMapping
    public String update(User user) {
        System.out.println("update success");
        return "update success";
    }

    //查一	GET    http://localhost:8080/users/1
    @GetMapping("/{id}")
    public String selectById(@PathVariable Integer id) {
        System.out.println("selectById " + id + " success");
        return "selectById " + id + " success";
    }

    //查所有 GET   http://localhost:8080/users
    @GetMapping
    public String selectAll() {
        System.out.println("selectAll success");
        return "selectAll success";
    }


}

 测试结果