forecho/yii2-rest-api

v0.0.6 2020-07-31 06:32 UTC

README

Yii 2 REST API 项目模板


Yii 2 REST API 项目模板是一个最佳快速创建小型 REST API 项目的骨架 Yii 2 应用程序。

该模板包含基本功能,包括用户注册/登录 API。它包含所有常用的配置,以便您能够专注于添加新功能到您的应用程序。

Testing Lint Code Coverage Scrutinizer Code Quality Latest Stable Version Total Downloads Latest Unstable Version License

需求

此项目模板的最低要求是您的 Web 服务器支持 PHP 7.2.0。

安装

通过 Composer 安装

如果您没有Composer,您可以按照getcomposer.org上的说明进行安装。

然后,您可以使用以下命令安装此项目模板

composer create-project --prefer-dist forecho/yii2-rest-api <rest-api>
cd <rest-api>
cp .env.example .env
php yii generate/key # optional 
chmod 777 -R runtime/

现在,假设 rest-api 是 Web 根目录下的目录,您应该可以通过以下 URL 访问应用程序。

https:///<rest-api>/web/

从 GitHub 安装

访问使用此模板 从 yii2-rest-api 创建新仓库

git clone xxxx
cd <rest-api>
cp .env.example .env
chmod 777 -R runtime/

然后,您可以通过以下 URL 访问应用程序

https:///<rest-api>/web/

使用 Docker 安装

更新您的供应商包

docker-compose run --rm php composer update --prefer-dist

运行安装触发器(创建cookie验证代码)

docker-compose run --rm php composer install    

启动容器

docker-compose up -d

然后,您可以通过以下 URL 访问应用程序

http://127.0.0.1:8000

备注

  • 开发所需的最小 Docker 引擎版本为 17.04(请参阅卷挂载的性能调整
  • 默认配置使用主目录中的主机卷 .docker-composer 作为 composer 缓存

查看包

使用

此时,您有一个运行在 http://127.0.0.1:8000 的 RESTful API 服务器。它提供以下端点

  • GET /health-check:提供健康检查服务(当实现服务器集群时需要)
  • POST /v1/join:创建用户
  • POST /v1/login:验证用户并生成 JWT
  • POST /v1/refresh-token:刷新 JWT

在浏览器中尝试 URL https://:8000/health-check,您应该看到类似 {"code":0,"data":"OK","message":"成功"} 的输出。

如果您有 cURL 或其他 API 客户端工具(例如 Postman),您可以尝试以下更复杂的场景

# create a user via: POST /v1/join
curl -X POST -H "Content-Type: application/json" -d '{"username":"demo","email":"demo@email.com","password":"pass123"}' https://:8000/v1/join
# should return like: {"code":0,"data":{"username":"demo","email":"demo@email.com","status":1,"created_at":"2020-07-18T16:38:11+08:00","updated_at":"2020-07-18T16:38:11+08:00","id":17},"message":"成功"}

# authenticate the user via: POST /v1/login
curl -X POST -H "Content-Type: application/json" -d '{"username": "demo", "password": "pass123"}' https://:8000/v1/login
# should return like: {"code":0,"data":{"user":{"id":4,"username":"dem211o1","avatar":"","email":"de21mo1@mail.com","status":1,"created_at":"2020-07-17T23:49:39+08:00","updated_at":"2020-07-17T23:49:39+08:00"},"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsImp0aSI6IllpaS1SRVNULUFQSSJ9.eyJpc3MiOiJodHRwOlwvXC9sb2NhbGhvc3QiLCJqdGkiOiJZaWktUkVTVC1BUEkiLCJpYXQiOjE1OTUwNjQ5NzIsImV4cCI6MTU5NTMyNDE3MiwidXNlcm5hbWUiOiJkZW0yMTFvMSIsImlkIjo0fQ.y2NSVQe-TQ08RnXnF-o55h905G9WHo6GYHNaUWlKjDE"},"message":"成功"}

# refresh a JWT
curl -X POST -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsImp0aSI6IllpaS1SRVNULUFQSSJ9.eyJpc3MiOiJodHRwOlwvXC9sb2NhbGhvc3QiLCJqdGkiOiJZaWktUkVTVC1BUEkiLCJpYXQiOjE1OTUwNjQ5NzIsImV4cCI6MTU5NTMyNDE3MiwidXNlcm5hbWUiOiJkZW0yMTFvMSIsImlkIjo0fQ.y2NSVQe-TQ08RnXnF-o55h905G9WHo6GYHNaUWlKjDE' https://:8000/v1/refresh-token
# should return like: {"code":0,"data":{"user":{"id":4,"username":"dem211o1","avatar":"","email":"de21mo1@mail.com","status":1,"created_at":"2020-07-17T23:49:39+08:00","updated_at":"2020-07-17T23:49:39+08:00"},"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsImp0aSI6IllpaS1SRVNULUFQSSJ9.eyJpc3MiOiJodHRwOlwvXC9sb2NhbGhvc3QiLCJqdGkiOiJZaWktUkVTVC1BUEkiLCJpYXQiOjE1OTUwNjQ5NzIsImV4cCI6MTU5NTMyNDE3MiwidXNlcm5hbWUiOiJkZW0yMTFvMSIsImlkIjo0fQ.y2NSVQe-TQ08RnXnF-o55h905G9WHo6GYHNaUWlKjDE"},"message":"成功"}