• API接口设计,rest,soap


    REST之前的重要协议SOAP

    rest(简单理解风格、约束、设计理念)

    rest之前是SOAP:SOAP Web API采用RPC风格,它采用面向功能的架构,所以我们在设计SOAP Web API的时候首相考虑的是应高提供怎样的功能(或者操作)。RESTful Web API采用面向资源的架构,所以在设计之初首先需要考虑的是有哪些资源可供操作

    SOAP通常以xml描述数据而rest提倡json描述数据(xml和json都是通用格式的与语言无关,可以在不同的语言中互通)

    RESTFul API基于REST 的api设计理念  (轻,通常用json描述数据,无状态)

    基于资源,增删改查只是对于资源状态的改变

    使用http动词(GET:查询、POST:创建、PUT:更新、DELETE:删除)来操作资源  

    查询get:/movie/:mid     不符合rest规范的:/getmovie/:mid

    tp5.0支持设置RESTFul请求的资源路由

    Route::resource('blog','index/blog');
    

    或者在路由配置文件中使用__rest__添加资源路由定义:

    return [
        // 定义资源路由
        '__rest__'=>[
            // 指向index模块的blog控制器
            'blog'=>'index/blog',
        ],
        // 定义普通路由
        'hello/:id'=>'index/hello',
    ]
    

    设置后会自动注册7个路由规则,如下:

    标识请求类型生成路由规则对应操作方法(默认)
    index GET blog index
    create GET blog/create create
    save POST blog save
    read GET blog/:id read
    edit GET blog/:id/edit edit
    update PUT blog/:id update
    delete DELETE blog/:id delete

    具体指向的控制器由路由地址决定,例如上面的设置,会对应index模块的blog控制器,你只需要为Blog控制器创建以上对应的操作方法就可以支持下面的URL访问:

    http://serverName/blog/           index
    http://serverName/blog/128        read
    http://serverName/blog/28/edit    edit 
    

    对每个http请求的响应结果都指明一个特别的状态码(200、201、202、400、401、403、404、500、...)

    如:403:当A用户请求了B用户的id号那么判断越权返回403

    错误码:自定义的错误id号

    统一描述错误:错误码、错误信息、当前url

    使用Token令牌来授权和验证身份(这里不用cookie)

    版本控制

    测试与生产环境分开:api/xxx.com  <-------> dev.api.xxx.com

    url语义要明确,最好可以望文知义

    最好有一份比较标准的文档

    参考豆瓣开放API 和github开发者API

    不要盲目照搬rest标准哦

    接口安全、接口认证、接口性能、接口控流、接口缓存设计(缓存过期策略、缓存命中、缓存优化)

    可能问题:

      接口请求地址和参数暴露

      重要接口返回的数据明文暴露

      app登录态请求的数据安全性问题

      代码层的数据安全问题 

    解决办法:

      基本参数放入header

      每次http请求都携带 授权码sign

      授权码sign 有效性(客户端携带时间与数据一起生成sign,访问服务端时解密sign的时间)

      授权码sign唯一性保证(存入mysql、文件、redis)

      请求参数、返回数据 按照安全性适当加密 (加密方式:md5 AES(推荐)  RSA)

      access_token

    最多的是app接口

    json的转化;

    一、JSON字符串转换为JSON对象

    var obj = eval('(' + str + ')');//由JSON字符串转换为JSON对象
    
    //或者
    var obj = str.parseJSON(); //由JSON字符串转换为JSON对象
    
    //或者
    var obj = JSON.parse(str); //由JSON字符串转换为JSON对象
    
    //或者
    var obj = $.parseJSON(str); //由jquery将JSON字符串转换为JSON对象

    二、将JSON对象转化为JSON字符串

    var last=obj.toJSONString(); //将JSON对象转化为JSON字符
    
    //或者
    var last=JSON.stringify(obj); //将JSON对象转化为JSON字符

    5.0支持设置RESTFul请求的资源路由

  • 相关阅读:
    Redis 客户端连接
    Redis 性能测试
    Redis 安全
    Redis 数据备份与恢复
    Redis 数据类型
    Redis 配置
    Redis 安装
    Redis 简介
    Redis教程
    如何修改Oracle Enterprise Linux时区?
  • 原文地址:https://www.cnblogs.com/lichihua/p/10407175.html
Copyright © 2020-2023  润新知