sjiamnocna / nette-apication
基于Nette的安全性的简单且轻量级的API
0.10.2
2023-03-21 11:06 UTC
Requires
- php: >=8.1.0
- ext-json: *
- nette/di: ^3.0
- nette/http: ^3.1
- nette/neon: ^3.2
- nette/nette: ^3.1
- nette/utils: ^3.2
README
欢迎来到基于Nette框架的小实验。
其目的是在使用Nette作为API的同时减少服务器负载。<br/> Nette非常棒且复杂。APItte和其他API工具也是如此。
该项目不解决所有可能的API。<br/> 它非常简单、简约且轻量(按设计)。
- 替换Nette\Application
- 去除不必要的预加载Nette组件以提高性能
- 演示者(转换为端点)
- 路由器(简化并合并到请求中)
- 容器中一些其他不必要的自动加载组件
- DI服务为每个端点按需创建
- 自动处理来自JS/Fetch API的数据,如果存在
x-requested-with: XMLHttpRequest
头信息,则通过STDIN
传递 - 使用Tracy显示XHR/Fetch请求中的错误
- 引入简约的AJAX API安全性
- 使用git@gitlab.com:sjiamnocna/renette.git作为前端,您可以简化React + Nette的集成
- 如果您将此存储库克隆到项目中的
server/
目录,您可以使用npm start
或yarn start
来运行React(Node)和PHP开发服务器(仅限开发,不要公开使用) - 更多功能即将到来
- 如果您将此存储库克隆到项目中的
- 如果您不喜欢任何内容,请随意覆盖
不要误解我,我喜欢Nette!
Nette、Latte等都是伟大的。在我看来,它们只是对于现代“API”世界来说效率不够高
用法
- 执行
composer require sjiamnocna/nette-apication
或将sjiamnocna/nette-apication
添加到您的composer.json中,然后运行composer install
- 为Nette创建
temp
和log
目录以供工作 - 将服务添加到配置
app/config/common.neon
services: Application: APIcation\CApplication(%parameters%)
- 创建
app/config/local.neon
如下(永远不要添加到GIT中!!!);parameters: service: # used for service authentication service: privatekey #...other param
从根目录(位于server/
之上)使用yarn start
启动服务器和本地React应用(CRA)
或者使用Makefile:make run
运行本地PHP服务器
使用CLIRunner在CLI中运行命令,例如CRON或维护
- 创建实现I**的类
代码
- 创建一个以'E'开头的Endpoint类(如
EEndpoint
),它继承自CAbstractEndpoint。- 我建议您为您的端点创建一个
src/Endpoints/
目录 - 如果您发现需要,可以自由覆盖公共方法
run()
,该方法是每次调用端点时都会运行的,但那时您就自行负责了 :)
- 我建议您为您的端点创建一个
- 在那里,创建一个名为
default
(或__default
用于秘密方法)的方法 - 访问
apidomain.com/api/endpoint
URL
性能
- 性能才是关键
- 由基本Nette-app、演示者、响应和没有任何API安全性的API解决方案组成,其性能超过
80ms
,缓存后为20ms
- 该项目实现了简单的安全性,DI注入到端点中,性能约为
40ms
,缓存后为5ms
- 由Tracy测量 - 当关闭调试模式时,我相信应用程序的性能会更好
- 由基本Nette-app、演示者、响应和没有任何API安全性的API解决方案组成,其性能超过
示例
- 请参阅gitlab:sjiamnocna/renette以了解React + Nette