美文网首页
Restfull API 示例

Restfull API 示例

作者: youpd | 来源:发表于2018-11-08 10:37 被阅读0次

    什么是Restfull API

    Restfull API 从字面就可以知道,他是rest式的接口,所以就要先了解什么是rest

    rest 不是一个技术,也不是一个协议

    rest 指的是一组架构约束条件和原则,提供了一个新的架构设计思路,满足这些约束条件和原则的应用程序或设计就是 RESTful

    在REST规则中,有两个基础概念:对象、行为

    对象就是我们要操作的对象,例如添加用户的操作,那么对象就是user

    行为有4种常用的:查看、创建、编辑、删除

    rest的提出者很巧妙的利用http现有方法来对应这4种行为:

    GET - 查看

    POST - 创建

    PUT - 编辑

    DELETE - 删除

    为什么用Restfull API

    例如常用的MVC结构中,前后端的融合还是比较紧密的,用户访问一个网址,例如 http://test.com/a.php,请求先发送到动态php处理,php中处理逻辑,然后使用页面模板来输出显示给用户

    以前用户主要就是用浏览器访问,这样的结构没什么问题,但现在移动客户端越来越重要,显然不能使用这个结构,需要为移动客户端开发接口

    RESTful API 就可以通过一套统一的接口为所有客户端提供web服务,实现前后端分离

    再比如在一个大型系统中,可能是多种开发语言一起工作,使用 RESTful API 就可以完全不关心开发语言,以标准的接口来协同工作

    Restfull API是怎么定义的

    下面通过几个示例了解下Restfull API的定义方式

    (1)查看所有任务

    GET http://test.com/tasks

    (2)新建一个任务

    POST http://test.com/tasks

    Data: title = Foobar

    (3)根据ID查看一个任务

    GET http://test.com/tasks/123

    (4)更新任务

    PUT http://test.com/tasks/123

    Data: title = New 

    (5)删除任务

    DELETE http://test.com/tasks/123

    可以看到Restfull API的风格非常简洁、统一、明确

    例如查看操作,用普通方式的话,定义方式是任意的,如:

    http://test.com/listall_tasks

    'listall_tasks' 就是随意定义的,通过这个名字才可以看出是查看全部的意思,如果开发人员用了一个没有明确意义的名字,那就需要看文档或者代码才能知道含义了

    而Restfull API 通过 GET 方法就知道是查看操作,通过tasks就知道查看的对象是什么

    @Controller

    @RequestMapping("/rest")publicclass RestController {

        @RequestMapping(value="/user/{id}",method=RequestMethod.GET)

        publicString get(@PathVariable("id") Integer id){

            System.out.println("get"+id);

            return"/hello";

        }

        @RequestMapping(value="/user/{id}",method=RequestMethod.POST)

        publicString post(@PathVariable("id") Integer id){

            System.out.println("post"+id);

            return"/hello";

        }

        @RequestMapping(value="/user/{id}",method=RequestMethod.PUT)

        publicString put(@PathVariable("id") Integer id){

            System.out.println("put"+id);

            return"/hello";

        }

        @RequestMapping(value="/user/{id}",method=RequestMethod.DELETE)

        publicString delete(@PathVariable("id") Integer id){

            System.out.println("delete"+id);

            return"/hello";

        }

    }

    相关文章

      网友评论

          本文标题:Restfull API 示例

          本文链接:https://www.haomeiwen.com/subject/sjiixqtx.html