如何请求接口服务
HTTP协议下的请求方式
对于PhalApi,默认是通过HTTP协议进行通信的。根据接口服务的具体实现,可以使用GET或POST方式请求。
访问入口
如前面所言,PhalApi推荐将系统对外可访问的根目录设置为/path/to/phalapi/public。PhalApi的统一访问入口文件是/path/to/phalapi/public/index.php文件。
当配置的域名为:dev.phalapi.net,并且已将根目录设置到public,此时访问的URL是:
http://dev.phalapi.net
当未配置域名,亦未配置根目录时,此时访问的URL是(显然更长更不优雅):
http://localhost/phalapi/public/index.php
如果尚未安装,请先阅读下载与安装。
如何指定待请求的接口服务?
默认情况下,可以通过s参数指定待请求的接口服务,当s未传时,缺省使用默认接口服务,即:App.Site.Index。以下三种方式是等效的,都是请求默认接口服务。
未传s参数
?s=Site.Index,省略命名空间,默认使用App
?s=App.Site.Index,带有命名空间前缀
也就是说,当请求除默认接口服务以外的接口服务时,其格式可以二选一:
?s=Class.Action
或者:?s=Namespace.Class.Action
其中,Namespace表示命名空间前缀,Class为接口服务类名,Action为接口服务方法名,这三者通常首字母大写,并使用英文点号分割。最终执行的类方法是:Namespace/Api/Class::Action()。需要注意的是:
温馨提示:s参数为service参数的缩写,即使用?s=Class.Action等效于?service=Class.Action,两者都存在时优先使用service参数。
关于Namespace命名空间
Namespace是指命名空间中/Api/的前半部分。并且需要在根目录下的composer.json文件中进行autoload的注册,以便能正常自动加载类文件。如默认已经注册的App命名空间:
{
"autoload": {
"psr-4": {
"App\\": "src/app"
}
}
}
当命名空间存在子命名空间时,在请求时使用下划线分割。反过来,当不存在多级命名空间时,命名空间不应该含有下划线。
关于Class接口服务类名
Class接口服务类名是指命名空间中/Api/的后半部分,并且必须是PhalApi/Api的子类。当命名空间存在子命名空间时,在请求时同样改用下划线分割。类似的,当不存在多级命名空间时,命名空间不应该含有下划线。
关于Action接口