Yii2从后端控制器调用api方法

时间:2017-04-03 00:52:32

标签: rest api yii2

我已经在Yii Rest API文档之后基于高级模板实现了API。我想从后端控制器调用API方法。有可能吗?

由于

3 个答案:

答案 0 :(得分:4)

所以,我终于找到了解决方案。

我的Yii2应用程序有高级模板。我已经创建了api模块。

所以app有3个端点

  • api
  • backend
  • 前端

我想从后端或前端调用api方法,这并不重要。

所以api的主要目标是模块。您可以阅读有关此here

的信息

backend / config / main.php

Fifo 0: [tube0]
Fifo 1: [tube1]
Fifo 2: [tube2]
Fifo 3: [tube3]
Fifo 4: [tube4]
Fifo 5: [tube5]
Nombre de processus à engendrer : 3
Create fifo: tube0
Create fifo: tube1
Create fifo: tube2
Create fifo: tube3
Create fifo: tube4
Create fifo: tube5
16:19:57.312293 - pid=89807: Création du processus fils #0 : PID 89810
16:19:57.314294 - pid=89807: Création du processus fils #1 : PID 89811
16:19:57.314500 - pid=89807: Création du processus fils #2 : PID 89812
16:19:57.413772 - pid=89810: Child process #0 (PID 89810) at work
16:19:57.415148 - pid=89810: Opening FIFO tube0 with mode 1
16:19:57.515290 - pid=89811: Child process #1 (PID 89811) at work
16:19:57.515558 - pid=89811: Opening FIFO tube0 with mode 0
16:19:57.515771 - pid=89810: Opened  FIFO tube0 with mode 1 - fd 3
16:19:57.515788 - pid=89810: Opening FIFO tube1 with mode 0
16:19:57.515764 - pid=89811: Opened  FIFO tube0 with mode 0 - fd 3
16:19:57.515883 - pid=89811: Opening FIFO tube1 with mode 1
16:19:57.516011 - pid=89810: Opened  FIFO tube1 with mode 0 - fd 4
16:19:57.516020 - pid=89810: Opening FIFO tube4 with mode 0
16:19:57.516010 - pid=89811: Opened  FIFO tube1 with mode 1 - fd 4
16:19:57.516120 - pid=89811: Opening FIFO tube2 with mode 1
16:19:57.615230 - pid=89812: Child process #2 (PID 89812) at work
16:19:57.615451 - pid=89812: Opening FIFO tube2 with mode 0
16:19:57.615582 - pid=89812: Opened  FIFO tube2 with mode 0 - fd 3
16:19:57.615593 - pid=89811: Opened  FIFO tube2 with mode 1 - fd 5
16:19:57.615678 - pid=89812: Opening FIFO tube3 with mode 1
16:19:57.615747 - pid=89811: Opening FIFO tube3 with mode 0
16:19:57.615852 - pid=89811: Opened  FIFO tube3 with mode 0 - fd 6
16:19:57.615881 - pid=89812: Opened  FIFO tube3 with mode 1 - fd 4
16:19:57.615986 - pid=89812: Opening FIFO tube4 with mode 1
16:19:57.616078 - pid=89810: Opened  FIFO tube4 with mode 0 - fd 5
16:19:57.616090 - pid=89810: Opening FIFO tube5 with mode 1
16:19:57.616071 - pid=89812: Opened  FIFO tube4 with mode 1 - fd 5
16:19:57.616153 - pid=89812: Opening FIFO tube5 with mode 0
16:19:57.616240 - pid=89810: Opened  FIFO tube5 with mode 1 - fd 6
16:19:57.616277 - pid=89810: P0 sent 41 bytes: [P0 (PID 89810) sent this message forwards]
16:19:57.616236 - pid=89812: Opened  FIFO tube5 with mode 0 - fd 6
16:19:57.616312 - pid=89811: P1 received 41 bytes: [P0 (PID 89810) sent this message forwards]
16:19:57.616444 - pid=89810: P0 received 42 bytes: [P1 (PID 89811) sent this message backwards]
16:19:57.616437 - pid=89811: P1 sent 42 bytes: [P1 (PID 89811) sent this message backwards]
16:19:57.616530 - pid=89811: P1 sent 41 bytes: [P1 (PID 89811) sent this message forwards]
16:19:57.616535 - pid=89812: P2 received 41 bytes: [P1 (PID 89811) sent this message forwards]
16:19:57.616660 - pid=89812: P2 sent 42 bytes: [P2 (PID 89812) sent this message backwards]
16:19:57.616665 - pid=89811: P1 received 42 bytes: [P2 (PID 89812) sent this message backwards]
16:19:57.616772 - pid=89812: P2 sent 41 bytes: [P2 (PID 89812) sent this message forwards]
16:19:57.616881 - pid=89810: P0 received 41 bytes: [P2 (PID 89812) sent this message forwards]
16:19:57.616893 - pid=89810: P0 sent 42 bytes: [P0 (PID 89810) sent this message backwards]
16:19:57.616817 - pid=89811: Child process #1 (PID 89811) exiting with status 0x20
16:19:57.617243 - pid=89810: Child process #0 (PID 89810) exiting with status 0x10
16:19:57.617501 - pid=89812: P2 received 42 bytes: [P0 (PID 89810) sent this message backwards]
16:19:57.617726 - pid=89807: Child 89811 died with status 0x2000
16:19:57.618114 - pid=89812: Child process #2 (PID 89812) exiting with status 0x30
16:19:57.618313 - pid=89807: Child 89810 died with status 0x1000
16:19:57.618635 - pid=89807: Child 89812 died with status 0x3000

然后例如

后端/ UserController / indexAction

中的

'modules' => [
    'api' => [
        'basePath' => '@api/modules/v1',
        'class' => 'api\modules\v1\Module'
    ]
],

它是如何工作的。希望它对某人有所帮助。

答案 1 :(得分:1)

可能就是这样。

假设你休息控制器在前端

在后端应用程序配置中,您可以创建一个额外的“UrlManager”组件名称,例如:urlManagerForRest

return [
  'components' => [
      'urlManager' => [
          // here is your backend URL rules
      ],
      'urlManagerForRest' => [
          'class' => 'yii\web\urlManager',
          'baseUrl' => 'http://your_path/frontend/web/index.php',
          'enablePrettyUrl' => true,
          'showScriptName' => false,
      ],

  ],
];

然后你应该调用以下内容来撰写网址:

Yii::$app->urlManagerFrontEnd->createUrl();

答案 2 :(得分:-1)

您可以使用postman来测试您的API。 首先下载你的邮递员版本,然后选择你的方法。然后确定您的输入和您的网址。最后按发送按钮。 你的网址可能就像

http://yourdomain.com/backend/web/index.php?r=yourController/yourAction

yourdomain.com是您的域名,yourController是控制者,yourAction是您的行动。