2017-02-20 19 views
0

Давайте предположим, что У меня два REST службы:Вызовите различные тонкие рамки URL/REST API под капотом?

1) один для цели аутентификации только -> Это/входа конечной точки

2) второй для других целей -> Это также имеет/входа в конечную точку, но Я хочу позвонить в конечную точку службы 1/login под капотом.

Примеры конечных точек:

1) Сервис # 1 POST http://service1.com/login (Тело запроса имеет 'электронная почта' & 'пропуск')

2) Услуги # 2 POST http://service2.com/login (следует назвать услуг # 1 в/логин на проходящий объект полного запроса, под капотом)

В идеале конечный пользователь вообще не будет знать об обслуживании №1. Это требование.

Возможно ли такое устройство?

Если нет, то что я могу сделать для этого? Простое перенаправление?

ПРИМЕЧАНИЕ: - Обе службы реализуются с использованием Слим Framework

ответ

1

Вы можете использовать жрать для прокси всего объекта запроса (путем изменения Uri) и как тонкий 3 и жрать реализует PSR-7.

Пример:

<?php 
require_once "../vendor/autoload.php"; 

use Slim\App; 
use Slim\Http\Request; 
use Slim\Http\Response; 
use GuzzleHttp\Client as GuzzleClient; 

// Create and configure Slim app 
$config = ['settings' => [ 
    'addContentLengthHeader' => false, 
    'displayErrorDetails' => true, 
]]; 

$app = new App($config); 

$app->post('/login', function (Request $request, Response $response) { 
    $guzzleClient = new GuzzleClient(); 

    $uri = $request->getUri(); 
    $uri = $uri->withHost('domain2.com'); 

    $requestProxy = $request->withUri($uri); 

    $responseFromRemote = $guzzleClient->send($requestProxy); 

    return $responseFromRemote; 
}); 

// Run app 
$app->run(); 
+0

Благодаря это работает отлично с небольшой модификацией '$ response-> getBody() -> запись ($ responseFromRemote-> getBody());' –