前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot20-REST API接口

SpringBoot20-REST API接口

作者头像
张风捷特烈
发布2018-11-07 14:45:54
1.2K0
发布2018-11-07 14:45:54
举报

一、REST 简介

1.接口的意义: 系统关联基于接口来实现,接口测试将复杂的系统关联简化 接口功能比较单一,能更好的进行测试覆盖,容易实现自动化持续集成 单元测试之后,UI测试之前,接口测试比单元测试粒度粗 2.Web Service: 一种跨编程语言和操作平台的远程调用技术 实现方式:SOAP和REST 3.SOAP: 简单对象访问协议(Simple Object Acsess Protocol) 数据交换的一种协议,轻量级、简单的、基于Xml的协议 4.REST: 表示性状态转换(Representational State Transfer) 一种系统(软件)架构风格(非标准),一种分布式系统的应用层解决方案 安全性 SOAP>REST、效率和易用性 REST>SOAP、成熟度 SOAP>REST 5.RESTFUL: RESTFUL 是REST的形容词 RESTFUL API 是指REST风格的接口 RESTFUL与REST、rest、resetful、RESTful意义上等同


二、RESTFUL接口
1.优势与特点
代码语言:javascript
复制
实现Client和Server端解耦,可降低开发的复杂性,提高系统的可伸缩性

资源为核心思想(面向资源的CRUD):HTTP[传输协议]升级为[应用传输协议]
创造资源C:POST      
获取资源R:GET          仅获取资源头信息:HEAD
更新资源U:PUT          更新资源部分属性:PATCH (使用较少,一般用POST代替)
删除资源D:DELETE

幂等性:发送一次和多次请求引起的[边界效应]一致
安全性:仅获取书籍,不具有[边界效应]GET、HEAD、OPTIONS
2.REST接口风格:
代码语言:javascript
复制
协议:使用https协议
域名:https://api.toly1994.com
版本控制:将版本号放在URL或Head二中
路径:只能包含名词,不能用动词
过滤信息:?limit=10      ?offset=10      ?page=1         ?sortby=name
Hypermedia API :在返回结果中提供其他连接资源,连向其他API
验证:确定身份
授权:权限设置
通用返回结果:如:
    {
    "msg":"uri not found",
    "code":0001,
    "data":null,
    "request":"GET\/v2\/photo\/132"
    }

常见的Http状态码.png


三、代码测试:基于SpringBoot-07-之数据库JPA(CRUD)修改
测试使用的RESTFUL接口一览:
代码语言:javascript
复制
http://localhost:8080/api/sword: GET 获取所用剑的信息
http://localhost:8080/api/sword: POST 新建一把剑
http://localhost:8080/api/sword/26: GET 获取一把指定id的剑信息
http://localhost:8080/api/sword/40: PUT 修改一把指定id的剑信息
http://localhost:8080/api/sword/39: DELETE 删除指定id的剑
http://localhost:8080/api/sword/21/name: GET 查询指定id的剑的名称
1.GET 获取所用剑的信息 http://localhost:8080/api/sword
代码语言:javascript
复制
/**
 * 查询所有:GET http://localhost:8080/api/sword
 *
 * @return 查询所有
 */
@GetMapping(value = "/sword")
public ResultBean findAllToJson() {
    return ResultHandler.ok(mSwordRepository.findAll());
}

列出所有.png


2.POST 新建一把剑 http://localhost:8080/api/sword
代码语言:javascript
复制
/**
 * 新建一把剑:POST GET http://localhost:8080/api/sword
 * @param sword 剑
 * @return 剑
 */
@PostMapping(value = "/sword")
public ResultBean addOne(@ModelAttribute Sword sword) {
    Sword save = mSwordRepository.save(sword);
    return ResultHandler.ok(save);
}

添加一个.png


3.GET 获取一把指定id的剑信息 http://localhost:8080/api/sword/26
代码语言:javascript
复制
/**
 * 根据id查询 GET http://localhost:8080/api/sword/26
 *
 * @param id id
 * @return 剑
 */
@GetMapping(value = "/swords/find/{id}")
public ResultBean find(@PathVariable("id") Integer id) {
    return ResultHandler.ok(mSwordRepository.findById(id).get());
}

查询一个.png


4.PUT 修改一把指定id的剑信息 http://localhost:8080/api/sword/26
代码语言:javascript
复制
/**
 * 根据id更新   PUT http://localhost:8080/api/sword/40
 *
 * @param id id
 * @return 剑
 */
@PutMapping(value = "/sword/{id}")
public ResultBean update(@PathVariable("id") Integer id, @ModelAttribute Sword sword) {
    return ResultHandler.ok(mSwordRepository.save(sword));
}

更新一个.png


5.DELETE 删除指定id的剑 http://localhost:8080/api/sword/39
代码语言:javascript
复制
/**
 * 根据id删除 DELETE http://localhost:8080/api/sword/39
 *
 * @param id id
 */
@DeleteMapping(value = "/sword/{id}")
public ResultBean insert(@PathVariable("id") Integer id) {
    ResultBean resultBean = find(id);
    mSwordRepository.deleteById(id);
    return resultBean;
}

删除一个.png


6.GET根据id查询剑的名称: http://localhost:8080/api/sword/21/name
代码语言:javascript
复制
/**
 * 根据id查询剑的名称 GET http://localhost:8080/api/sword/21/name
 *
 * @param id id
 * @return 剑
 */
@GetMapping(value = "/sword/{id}/name")
public ResultBean findName(@PathVariable("id") Integer id) {
    return ResultHandler.ok(mSwordRepository.findById(id).get().getName());
}

查询一个名称.png


后记:捷文规范
1.本文成长记录及勘误表

项目源码

日期

备注

V0.1--无

2018-10-19

SpringBoot20-REST API接口

声明

1----本文由张风捷特烈原创,转载请注明 2----欢迎广大编程爱好者共同交流 3----个人能力有限,如有不正之处欢迎大家批评指证,必定虚心改正 4----看到这里,我在此感谢你的喜欢与支持

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.10.19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二、RESTFUL接口
    • 1.优势与特点
      • 2.REST接口风格:
        • 测试使用的RESTFUL接口一览:
    • 三、代码测试:基于SpringBoot-07-之数据库JPA(CRUD)修改
      • 1.GET 获取所用剑的信息 http://localhost:8080/api/sword
        • 2.POST 新建一把剑 http://localhost:8080/api/sword
          • 3.GET 获取一把指定id的剑信息 http://localhost:8080/api/sword/26
            • 4.PUT 修改一把指定id的剑信息 http://localhost:8080/api/sword/26
              • 5.DELETE 删除指定id的剑 http://localhost:8080/api/sword/39
                • 6.GET根据id查询剑的名称: http://localhost:8080/api/sword/21/name
                • 后记:捷文规范
                  • 1.本文成长记录及勘误表
                    • 声明
                    相关产品与服务
                    持续集成
                    CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档