迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Nervsys关于 Nervsys
安装
用法所有用例代码均以系统默认设置为基础。1. 建议的项目结构注意:项目根目录将会被设置在请求入口文件的父级目录。Root/ ├─api/ 默认API入口代码目录 │ └─DemoApiClass.php API DEMO类文件 ├─app/ 默认业务代码目录 │ └─DemoAppClass.php 业务代码DEMO类文件 ├─config/ 建议配置文件目录 (使用 "Ext/libConfGet.php" 加载解析) │ ├─dev.conf dev配置文件 │ ├─prod.conf prod配置文件 │ └─... 其他配置文件 ├─message/ 建议消息文件目录 (使用 "Ext/libErrno.php" 加载解析) │ └─msg.ini 自定义消息文件 └─www/ 默认web目录 └─index.php 入口脚本 2. NS 集成跟着 "安装" 的步骤,把NS整合到入口文件中。样例代码如下: require __DIR__ . '/../../NervSys/NS.php';//可选,如果需要的话,请参阅"Ext/libCoreApi.php"\Ext\libCoreApi::new() //打开核心调试模式 (错误信息会随着结果显示出来) ->setCoreDebug(true) //打开全局跨域许可 (默认请求头) ->addCorsRecord('*') //设置输出格式为"application/json; charset=utf-8" ->setContentType('application/json');NS::new(); 3. 请求数据格式NS可以接续通过GET和POST传过来的参数,FormData and request Payload都可以解析。 在HTTP请求中,NS会依照如下步骤获取和解析数据包: 1. 从HTTP请求中读取Accept,如果入口没定义,将以此来决定返回类型。2. 从URL中读取,尝试通过"PATH_INFO"或者"REQUEST_URI"来找到"c"。3. 按照 FILES -> POST -> GET 顺序从 FormData 中以非覆盖模式获取传入参数。4. 获取 request Payload,尝试以 JSON/XML 格式来解析数据包,并将解析好的数据并入以上数据包。5. 按照入口文件中指定的key来读取HTTP Header和Cookie数据,然后并入到以上数据包。6. 从数据源中寻找并分离出"c",当作请求指令传给路由类处理。 在CLI模式下,NS读取"-c"参数当成"c",或者没找到"-c"的时候,获取第一个参数当成"c",字符串类型的参数"-d"会被解析后当成CGI的数据源,"-r"强制返回数据的输出格式,其他剩余参数,会被当做CLI命令行参数。 4. 关于 "c""c" 参数会被当成请求指令,指导系统继续执行后续操作。 在CGI模式下,也就是大家所知的HTTP请求,因为一些安全因素考虑,"c" 永远都是默认重定向到api路径下,但是,CLI模式下允许直接调用root路径下命令,只需要在"c"前面加上"/",并使用完整的类命名空间路径即可。 有效的 "c" 参数格式如下: 基于API路径: innerpath_in_api_path/class_name/public_method_name例子:URL: http://your_domain/index.php/user/login => 调用 "\api\user" 类里面的 "login" 方法。URL: http://your_domain/index.php/user/info/byId => 调用 "\api\user\info" 类里面的 "byId" 方法。GET: http://your_domain/index.php?c=user/loginPOST: 直接用参数"c"传入"user/login",FormData 或 request Payload 都支持。 基于ROOT路径: /namespace/class_name/public_method_name例子:URL: 不支持.CLI: php index.php /app/user/login => 调用 "\app\user" 类里面的 "login" 方法。CLI: php index.php -c"/app/user/login" => 调用 "\app\user" 类里面的 "login" 方法。GET: http://your_domain/index.php?c=/app/user/loginPOST: 直接用参数"c"传入"/app/user/login",FormData 或 request Payload 都支持。 5. 数据自动填充当系统获取到"c"和数据源的之后,路由类和执行类会被唤醒,调用具体的方法来处理。键名匹配的参数会被从数据源冲提取出来,并按照正确的顺序排列,在函数调用时自动传给目标函数。要注意所有传输给NS的参数,所有键名都是大小写敏感的,键值是类型严格限制的。所有返回的结果数据会被捕获和输出。 例子: 参数的顺序不定,可以是任何顺序:URL: http://your_domain/index.php/user/login?name=admin&passwd=admin&age=30&type=clientURL: http://your_domain/index.php/user/login?passwd=admin&age=30&name=admin&type=client
namespace api;class user{ public function login($name, $passwd) { //你的代码 return $name . ' is online!'; }}
namespace api;class user{ public function login($name, $passwd, int $age) { //你的代码 return $name . ' is ' . $age . ' years old.'; }} 6. 暴露的核心类从8.0开始,NS暴露了比较重要的核心库给开发者。 待办
除了上述功能以外,NS还有很长的路要走。 支持机构感谢 JetBrains 提供的开源许可证对本项目的支持。 开源协议本软件使用 Apache License 2.0 协议,请严格遵照协议内容发行和传播。 ![]() |
请发表评论