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.neonservices: 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/endpointURL
性能
- 性能才是关键
- 由基本Nette-app、演示者、响应和没有任何API安全性的API解决方案组成,其性能超过
80ms,缓存后为20ms - 该项目实现了简单的安全性,DI注入到端点中,性能约为
40ms,缓存后为5ms - 由Tracy测量 - 当关闭调试模式时,我相信应用程序的性能会更好
- 由基本Nette-app、演示者、响应和没有任何API安全性的API解决方案组成,其性能超过
示例
- 请参阅gitlab:sjiamnocna/renette以了解React + Nette