ApiAdmin v3.0配置大全

作为一名具有一定后端开发经验但称不上丰富的IT人,想要自己独立完成一个Webapi项目,自知后台安全是整个项目生存的根本,自己又不具备强悍的后台api开发能力,于是就想到是否有后端的同仁已经准备了这种现成的Api管理后台,晚上搜罗了一圈,看到Apiadmin,专门作为api后台。
官方的介绍如下:

ApiAdmin从3.0开始,更加专注于API,将原先的MVC的架构转变为MVVM的方式,从管理系统本身出发彻底转变为纯API项目。所以ApiAdmin3.0是一个前后分离的项目,当前只针对PHP(后端) 部分,前端(Vue)部分是一个完全独立的全新项目,请移步 ApiAdmin-WEB

系统需求

PHP >= 5.6
MySQL >= 5.5.3
Redis

步骤:

一、配置本地站点

本地需要配置两个站点,一个提供api服务、一个显示后台页面。
准备好两个域名,task.6feel.com(apiadmin后台地址)、taskweb.6feel.com(apiadmin-web前端可视化页面地址),如果只做本地演示,可以修改本地host文件,配置以上两个域名。
这里使用wamp3.0.2(提取码:5q6a )安装的apache环境,修改httpd-vhosts.conf

<VirtualHost *:80>
    DocumentRoot "D:/wamp/www/ApiAdmin/public"
    ServerName task.6feel.com
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "D:/wamp/www/ApiAdmin-WEB/dist"
    ServerName taskweb.6feel.com
</VirtualHost>

.host文件修改

127.0.0.9  task.6feel.com
127.0.0.10  taskweb.6feel.com

二、下载官方源代码

安装好git,然后使用git下载ApiAdmin源代码和ApiAdmin-WEB源代码

//下载ApiAdmin
git clone https://gitee.com/apiadmin/ApiAdmin.git
//下载ApiAdmin-WEB
git clone https://gitee.com/apiadmin/ApiAdmin-WEB.git

三、配置ApiAdmin

1、找到项目中的SQL数据库文件,并导入到MySQL

ApiAdmin /  data /  apiadmin_3.0.6.sql

2、修改数据库配置文件
ApiAdmin / application / database.php

    'hostname'        => '127.0.0.1',   //修改成您MYSQL的实际地址
    // 数据库名
    'database'        => 'apiadmin',    //导入SQL时的库名
    // 用户名
    'username'        => 'root',        // 具有您所配置数据库所有权的用户名,不推荐使用root账号
    // 密码
    'password'        => '123456',      // 密码

3、打开您的地址如看到以下信息,👍恭喜您成功的安装了 ApiAdmin的后端PHP部分🎉🎉🎉

{
    "code": 1,
    "msg": "操作成功",
    "data": {
        "Product": "NwTownApi",
        "Version": "v3.0",
        "Company": "ApiAdmin开发维护团队",
        "ToYou": "I'm glad to meet you(终于等到你!)"
    },
    "debug": [
        {
            "TpVersion": "5.0.16"
        }
    ]
}

如果本地没有安装redis,务必将config.php中缓存设置type=>File,默认是Redis

image.png

四、配置ApiAdmin-WEB

配置可视化后台部份需要了解vue,webpack,npm的基本知识,当然你可以和我一起来搭建它。
在开始之前,请先确保如下环境已经成功安装nodejs,然后进入项目目录,使用npm初始化项目:

npm install

经过一段时间等待,如果一切顺利,Node会自动帮你打开浏览器,提供预览。同时,您的Commond会显示webpack: Compiled successfully. !

1、修改配置文件:webpack.prod.config.js
/build/webpack.prod.config.js中的publicPath参数需要变更为你自己的前端域名

output: {
    publicPath: 'http://apiweb.6feel.com/dist/',  // 修改 https://admin.apiadmin.org 这部分为你的静态部署服务器所配置的域名 与PHP后端非同一域名,最后的/dist/必须带,指向静态文件目录
    filename: '[name].[hash].js',
    chunkFilename: '[name].[hash].chunk.js'
}

2、修改配置文件:config.js
/build/config.js中的baseUrl参数需要变更为你自己的后端域名

let config = {
    env: 'development',
    baseUrl: 'http://api.6feel.com/admin/'  // https://api.apiadmin.org更改为您项目的PHP后端域名
};
export default config;

3、编译项目,生成web文件

npm run build

执行命令后,我们可以看到dist目录下多出来一个dist目录和index.html文件。

image.png

我们把dist目录、index.html文件上传到静态部署服务器就可以在线上看到您的可视化后台了。


接口案例演示

1、创建获取access_token接口

当前算法主要服务于获取身份令牌(AccessToken)所进行的身份认证秘钥(signature)的计算。在请求高级接口的时候,系统会验证应用的合法性,也就是验证AccessToken。所以AccessToken是请求API的必要参数。

在请求获取AccessToken的接口时候,服务器会对用户合法性(signature)进行核验,具体的接口请求字段,请参看具体的接口文档。
一、获取app_id和app_secret
目前获取应用ID和应用秘钥是由系统管理员发放,如果你还没有请联系管理员。 请注意:app_secret非常重要请妥善保管
二、准备加密对象,并且根据字段名降序排序

//排序好后应当是如下所示的数据
{
    "app_id":"服务器颁发的应用ID",
    "app_secret":"服务器颁发的应用秘钥",   //请注意,此字段只是在计算加密串的时候在被加入,API请求请勿传递此字段值
    "device_id":"设备唯一ID",
    "rand_str":"随机字符串",
    "timestamp":当前系统时间戳
}

三、生成原始串
将上面的数据构建成HTTP查询字符串,如下所示:
app_id=服务器颁发的应用ID&app_secret=服务器颁发的应用秘钥&device_id=设备唯一ID&rand_str=随机字符串&timestamp=当前系统时间戳
四、计算秘钥
将第三步生成的字符串进行哈希计算(md5)获得最终身份认证秘钥。

打开 php程序域名/wiki 》算法详解,查看最新

根据最终生成的signature,组合地址,获取access_token,地址如下:
http://task.6feel.com/api/5c1fa1bf987d8?app_id=86523959&device_id=web&rand_str=abcdefg&timestamp=1545577655&signature=efea65e1e9818df2693348d34069b604

image.png

接口配置:
image.png

2、创建根据用户id获取用户信息

接口配置:

image.png

请求参数:
参数名:id
类型:interge
规则:{min:1}

在application>api>controller下新建文件User.php,代码如下:

<?php
namespace app\api\controller;
use app\model\AdminUser;
use app\util\ReturnCode;

class User extends Base {
    public function getList() {
        $id = $this->request->param ( "id" );
        $userInfo = AdminUser::get ( [ 
                "id" => $id 
        ] );
        if ($userInfo) {
            return $this->buildSuccess ( $userInfo->toArray () );
        } else {
            return $this->buildFailed ( ReturnCode::NOT_EXISTS, "当前用户不存在" );
        }
    }
}

?>

postman提交结果:
Headers中配置参数:

Content-Type:application/x-www-form-urlencoded
version:v3.0
access-token:390da400f4d30b5b9f857e3c2cdbe263
user-token:空(当要求用户登录时必填)

提交结果:

image.png


常见报错

1、非常抱歉,您没有权限这么做!
可能原因:
需要在应用中添加的接口访问。需要重新签发AccessToken才能生效新的权限

image.png

2、缺少user-token
操作说明:http://www.iwonmo.com/archives/1333.html


系统说明

1、access-token

当开启access-token验证,接口header中必须带上access-token字段,用于验证是否有权限访问此应用。
2、user-token

image.png

当开启user-token验证,接口header中必须带上user-token字段,用于验证是否已登录。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • 1、开启公众号开发者模式 公众平台的技术文档目的为了简明扼要的交代接口的使用,语句难免苦涩难懂,甚至对于不同的读者...
    good7758阅读 1,504评论 0 1
  • 先引入JS 文件 this.wxShare() 在created里调用 首先登陆微信公众号 JSSDK使用步骤 步...
    寄鱼予海与你阅读 6,676评论 1 3
  • Cisco ACI Bootcamp: Notes and Thoughts Pt.1 https://comer...
    taoza阅读 227评论 0 1
  • 不知从何时起我感觉对任何东西都失去兴趣,再也没有小时候的那种好奇心了。那种对新鲜事物充满着好奇心,那种从心底里迸发...
    keepinger阅读 225评论 0 0
  • 日本东京、福冈、舞鹤、大凑等大型港口布满了成建制的舰队群,各军事基地中凭空多出了数千万名装备精良的士兵,乌压压的占...
    青殊文衫阅读 328评论 0 1