6.3.1 使用说明

将框架目录下的 ./SDK/PHP/PhalApiClient 目录中的全部代码拷贝到项目里面即可使用。

6.3.2 代码示例

如下是使用的代码场景片段。

首先,我们需要导入SDK包:

  1. <?php
  2. require_once dirname(__FILE__) . '/PhalApiClient.php';
  3. $client = PhalApiClient::create()
  4. ->withHost('http://demo.phalapi.net/');
  5. $rs = $client->reset()
  6. ->withService('Default.Index')
  7. ->withParams('username', 'dogstar')
  8. ->withTimeout(3000)
  9. ->request();
  10. var_dump($rs->getRet());
  11. echo "\n";
  12. var_dump($rs->getData());
  13. echo "\n";
  14. var_dump($rs->getMsg());

6.3.3 运行效果

运行后,可以看到:

  1. int(200)
  2. array(4) {
  3. ["title"]=>
  4. string(12) "Hello World!"
  5. ["content"]=>
  6. string(36) "dogstar您好,欢迎使用PhalApi!"
  7. ["version"]=>
  8. string(5) "1.2.1"
  9. ["time"]=>
  10. int(1444925238)
  11. }
  12. string(0) ""

6.3.4 更多调用

当需要重复调用时,需要先进行 重置操作 ,如:

  1. //one more time
  2. $rs = $client->reset()
  3. ->withService("User.GetBaseInfo")
  4. ->withParams("user_id", "1")
  5. ->request();
  6. var_dump($rs->getRet());
  7. echo "\n";
  8. var_dump($rs->getData());
  9. echo "\n";
  10. var_dump($rs->getMsg());

当请求有异常时,返回的 ret!= 200,如:

  1. //illegal request
  2. $rs = $client->reset()
  3. ->withService("XXX.XXXXX")
  4. ->withParams("user_id", "1")
  5. ->request();
  6. var_dump($rs->getRet());
  7. echo "\n";
  8. var_dump($rs->getData());
  9. echo "\n";
  10. var_dump($rs->getMsg());

以上的输出为:

  1. --------------------
  2. int(200)
  3. array(3) {
  4. ["code"]=>
  5. int(0)
  6. ["msg"]=>
  7. string(0) ""
  8. ["info"]=>
  9. array(3) {
  10. ["id"]=>
  11. string(1) "1"
  12. ["name"]=>
  13. string(7) "dogstar"
  14. ["from"]=>
  15. string(7) "oschina"
  16. }
  17. }
  18. string(0) ""
  19. --------------------
  20. int(400)
  21. array(0) {
  22. }
  23. string(45) "非法请求:接口服务XXX.XXXXX不存在"

6.3.5 扩展你的过滤器和结果解析器

(1)扩展过滤器

当服务端接口需要接口签名验证,或者接口参数加密传送,或者压缩传送时,可以实现此过滤器,以便和服务端操持一致。

当需要扩展时,分两步。首先,需要实现过滤器接口:

  1. <?php
  2. class MyFilter implements PhalApiClientFilter {
  3. public function filter($service, array &$params) {
  4. //TODO ...
  5. }
  6. }

然后设置过滤器:

  1. <?php
  2. $rs = PhalApiClient.create()
  3. .withHost("http://demo.phalapi.net/")
  4. .withFilter(new MyFilter())
  5. // ...
  6. .request();

(2)扩展结果解析器

当返回的接口结果不是JSON格式时,可以重新实现此接口。

当需要扩展时,同样分两步。类似过滤器扩展,这里不再赘述。

原文: https://www.phalapi.net/wikis/6-3.html