# yii2_api_basic
**Repository Path**: maoyunzhi/yii2_api_basic
## Basic Information
- **Project Name**: yii2_api_basic
- **Description**: 基于yii2.0-basic模版,采用RESTful Web 服务,搭建通用的Api Server的基本架构
- **Primary Language**: PHP
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 1
- **Created**: 2022-12-16
- **Last Updated**: 2024-12-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: yii2, Yii2-RESTful-API, api-demo
## README
API Demo By Yii 2.0 Basic Template
基于yii2.0的basic模版,进行一定的精简后,作为后端API接口服务,抛开具体的业务现,仅考虑后端API基本的一些验证实现方式。
可以让任何接口项目,都可以基于这个模版进行后续的开发。
虽然Yii2.0一般都是基于PHP 5.6的版本,但php5的性能相对于7之后的版本,差距还是比较大的,为了拥抱新版本,将PHP的版本支持改为7.4 。
DIRECTORY STRUCTURE
-------------------
api_entrance api request entrance
assets/ contains assets definition
commons/ contains common classes
config/ contains application configurations
controllers/ contains Web controller classes
models/ contains model classes
runtime/ contains files generated during runtime
vendor/ contains dependent 3rd-party packages
views/ contains view files for the Web application
web/ contains the entry script and Web resources
REQUIREMENTS
------------
具体实现的功能:
1. URL美化, 例如:http://XXX.com/api/version ,本模版不支持模块化的v1模式,偏向于简单化。
2. 支持返回统一的格式化数据。参考:commons\ApiResponse类
3. 签名认证, 要求URL中必须带sign和ut,sing代表签名,ut代表utc时间戳,签名的算法,参考commons\SignFilter类
4. Token认证,采用Yii2自带的HttpBearerAuth认证模式,验证Header中的token值
5. 采用独立认证类,而不是直接继承ActiveRecord类,更方便自定义认证算法。 认证类:models\ApiAuth
6. 支持获取Token方法,该方法不受Token认证限制。方便采用动态Token方案。
7. 支持获取签名方法,该方法不受签名认证,Token认证限制。方便验证签名正确性。
8. 支持API基类,业务API类只需要继承API基类,就可以支持API的基本功能。API基类:controllers\ApiController类
POSTMAN演示顺序
1. 调用获取签名接口:http://localhost/yii2_api_basic/api_entrance/api/sign ,方式和参数,使用获取Token接口需要用的参数,获取时间戳和sign
2. 调用获取Token接口:http://localhost/yii2_api_basic/api_entrance/api/get_token?sign=XXXX&ut=XXXX, 用签名接口获得的sign和时间戳替换,并在body的raw中提交app_code和app_secret,获取Token值
3. 再调用签名接口,使用将要测试的接口参数,获取时间戳和sign,例如即将调用demo接口,采用demo接口的参数
4. 再调用测试接口,如demo,用上面获取的时间戳和sign,并在header中,添加Content-Type:application/json,token:第二步获取的token值