Direkt zum Inhalt springen Direkt zur Navigation springen Direkt zum Footer springen

REST Schnittstellen und TYPO3

REST hat sich zu einem gewissen Standard als Webservice zum Datenaustausch entwickelt.

1. Empfang

Liegen die Daten auf der Gegenseite und will man sie über TYPO3 ausgeben oder verändern, gibt es mehrere Extensions. Ich habe für ein Projekt die Extension restclient verwendet, mit der man die API der Gegenseite ansprechen kann.

 

    public function makeRestRequest ($dataJson) {

        $httpClientRequest = $this->restClientService
            -> setMethod('post')
            -> setUrl('http://url_to_RESTAPI/search')
            -> setHeader(array('Content-Type: application/json', 'Content-Length: '.strlen($dataJson)))
            -> setData($dataJson);
        $httpClient = $this->restHttpService->setErrorThrowException(true)->setRequest($httpClientRequest);
        try {
            $httpClient->exec();

            $httpClientResponse = $httpClient->getResponse();
            $userProfile = $httpClientResponse->getBody();
            $result = json_decode($userProfile);
            return $result;

        }
        catch (HttpClientException $e) {
            $errorCode = $e->getCode();
            $errorMEssage = $e->getMessage();
        }
    }

 Diese Methode lässt sich dann direkt in einer Extbase Action aufrufen:

 

public function singleAction() {
		$data = array(
			"type" => "company",
			"facets" => array(
				array(
					"type" => "companyKey",
					"term" 	=>  $this->request->getArgument("companyKey")
				)
			),
			"pageSize" => 1000
		);
		$dataJson = json_encode($data);
		$result = $this->restService->makeRestRequest($dataJson);
}

Über den Parameter dataJson lassen sich die entsprechenden Schnittstellenparameter übertragen.

2. Service

Möglich ist es natürlich auch, TYPO3 als Service einzurichten, um über eine Schnittstelle Daten auszuliefern, die in TYPO3 vorhanden sind. Dies habe ich über die Extension routing gelöst. Hierbei werden Routes angelegt, die auf eine Extbase Action mappen. Die Routes können so konfiguriert werden, dass man den kompletten CRUD Prozess (Create, Read, Update, Delete) abbilden kann.