Restful API

2021-07-20 05:12

阅读:721

restful全称:reprezentational state transfer,它是一种设计风格,面向的是资源

既然restful面向资源,那URL作为资源定位符也应当设计为代表资源,例如:

localhost:8080/users : 用户资源列表;

users是一个名词,它表示用户资源列表,区别于传统的: getUsers等;

更多示例:

localhost:8080/users/1 : 单个用户,ID为1

那我们又会有疑惑,增删改操作呢?在restful风格中,增删改不在URL地址中展示,希望展示给用户的是一个简单的资源地址,而增删改操作通过请求method来区分,看一个简单的示例就明白了:

/**
 * restful
 */
@RestController
@RequestMapping(value = "users")
public class UserController {
    
    /**
     * 获取列表
     * @return
     */
    @RequestMapping(value = "", method = RequestMethod.GET)
    public String getUsers(){
        System.out.println("获取用户数据列表");
        return "获取用户数据列表";
    }
    
    /**
     * 获取单个用户
     * @param id
     * @return
     */
    @RequestMapping(value = "{id}", method = RequestMethod.GET)
    public String getUser(@PathVariable Long id){
        System.out.println("获取单个用户数据");
        return "获取单个用户";
    }
    
    /**
     * 创建用户
     * @param user
     * @return
     */
    @RequestMapping(value = "user", method = RequestMethod.POST)
    public String createUser(@RequestBody User user){
        System.out.println("创建用户");
        return "创建用户";
    }
    
    /**
     * 更新用户
     * @param id
     * @param user
     * @return
     */
    @RequestMapping(value = "{id}", method = RequestMethod.PUT)
    public String updateUser(@PathVariable(value="id") long id, @RequestBody User user){
        System.out.println("更新用户");
        return "更新用户";
    }
    
    /**
     * 删除用户
     * @param id
     * @return
     */
    @RequestMapping(value = "{id}", method = RequestMethod.DELETE)
    public String deleteUser(@PathVariable Long id){
        System.out.println("删除用户");
        return "删除用户";
    }
}

我们看到,我们这里都用了名词 + method + 路径参数绑定,每一个URL指向一种资源,而不是把URL看成接口。

而ajax将通过资源地址,以及method的区分,来进行对应的操作


评论


亲,登录后才可以留言!