Restfull API 示例

什么是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";

    }


}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,293评论 19 139
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong阅读 22,663评论 1 92
  • 1、@Controller在SpringMVC 中,控制器Controller 负责处理由DispatcherSe...
    阿里高级软件架构师阅读 5,005评论 1 1
  • 傍晚去玩的时候,有一个湖,也不算是很大。 湖边的景色加上两种渐变色的天空倒映在湖里,此时会想起什么? 总之,我是想...
    旧梦721阅读 1,144评论 0 0
  • 我已然感触到了时间的局促 致使去忘记你与过去 变得拘束 不偶尔的唐突 充斥吸呼 不知觉击碎静秘的束缚 孩子喜欢装作...
    小安冬阅读 5,164评论 38 30