Restful API

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Restful API相关的知识,希望对你有一定的参考价值。

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的区分,来进行对应的操作

以上是关于Restful API的主要内容,如果未能解决你的问题,请参考以下文章

使用 RESTful 服务保护跨域的 API 调用

Feign 接入第三方restful api 入门

通俗易懂的RESTful API实践详解(含代码)

找不到工人。代码 404。当我调用停止录制 Restful API 时

Go实现RESTful_API

如何使用ABAP Restful API进行代码的全文搜索