SpringBoot20-REST API接口

作者: e4e52c116681 | 来源:发表于2018-10-19 10:06 被阅读10次

    一、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.优势与特点
    实现Client和Server端解耦,可降低开发的复杂性,提高系统的可伸缩性
    
    资源为核心思想(面向资源的CRUD):HTTP[传输协议]升级为[应用传输协议]
    创造资源C:POST      
    获取资源R:GET          仅获取资源头信息:HEAD
    更新资源U:PUT          更新资源部分属性:PATCH (使用较少,一般用POST代替)
    删除资源D:DELETE
    
    幂等性:发送一次和多次请求引起的[边界效应]一致
    安全性:仅获取书籍,不具有[边界效应]GET、HEAD、OPTIONS
    
    2.REST接口风格:
    协议:使用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接口一览:
    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
    /**
     * 查询所有: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
    /**
     * 新建一把剑: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
    /**
     * 根据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
    /**
     * 根据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
    /**
     * 根据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
    /**
     * 根据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接口
    2.更多关于我
    笔名 QQ 微信 爱好
    张风捷特烈 1981462002 zdl1994328 语言
    我的github 我的简书 我的CSDN 个人网站
    3.声明

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

    相关文章

      网友评论

        本文标题:SpringBoot20-REST API接口

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