Okay mal angenommen ich würde die API nutzen, gibt es dafür ein Beispiel für jemanden, der eine REST-API noch nie benutzt hat?
<?php
class ApiClient
{
const METHOD\_GET = 'GET';
const METHOD\_PUT = 'PUT';
const METHOD\_POST = 'POST';
const METHOD\_DELETE = 'DELETE';
protected $validMethods = [
self::METHOD\_GET,
self::METHOD\_PUT,
self::METHOD\_POST,
self::METHOD\_DELETE,
];
protected $apiUrl;
protected $cURL;
public function \_\_construct($apiUrl, $username, $apiKey)
{
$this-\>apiUrl = rtrim($apiUrl, '/') . '/';
//Initializes the cURL instance
$this-\>cURL = curl\_init();
curl\_setopt($this-\>cURL, CURLOPT\_RETURNTRANSFER, true);
curl\_setopt($this-\>cURL, CURLOPT\_FOLLOWLOCATION, false);
curl\_setopt($this-\>cURL, CURLOPT\_USERAGENT, 'Shopware ApiClient');
curl\_setopt($this-\>cURL, CURLOPT\_HTTPAUTH, CURLAUTH\_DIGEST);
curl\_setopt($this-\>cURL, CURLOPT\_USERPWD, $username . ':' . $apiKey);
curl\_setopt(
$this-\>cURL,
CURLOPT\_HTTPHEADER,
['Content-Type: application/json; charset=utf-8']
);
}
public function call($url, $method = self::METHOD\_GET, $data = [], $params = [])
{
if (!in\_array($method, $this-\>validMethods)) {
throw new Exception('Invalid HTTP-Methode: ' . $method);
}
$queryString = '';
if (!empty($params)) {
$queryString = http\_build\_query($params);
}
$url = rtrim($url, '?') . '?';
$url = $this-\>apiUrl . $url . $queryString;
$dataString = json\_encode($data);
curl\_setopt($this-\>cURL, CURLOPT\_URL, $url);
curl\_setopt($this-\>cURL, CURLOPT\_CUSTOMREQUEST, $method);
curl\_setopt($this-\>cURL, CURLOPT\_POSTFIELDS, $dataString);
$result = curl\_exec($this-\>cURL);
$httpCode = curl\_getinfo($this-\>cURL, CURLINFO\_HTTP\_CODE);
return $this-\>prepareResponse($result, $httpCode);
}
public function get($url, $params = [])
{
return $this-\>call($url, self::METHOD\_GET, [], $params);
}
public function post($url, $data = [], $params = [])
{
return $this-\>call($url, self::METHOD\_POST, $data, $params);
}
public function put($url, $data = [], $params = [])
{
return $this-\>call($url, self::METHOD\_PUT, $data, $params);
}
public function delete($url, $params = [])
{
return $this-\>call($url, self::METHOD\_DELETE, [], $params);
}
protected function prepareResponse($result, $httpCode)
{
echo "
## HTTP: $httpCode
";
if (null === $decodedResult = json\_decode($result, true)) {
$jsonErrors = [
JSON\_ERROR\_NONE =\> 'No error occurred',
JSON\_ERROR\_DEPTH =\> 'The maximum stack depth has been reached',
JSON\_ERROR\_CTRL\_CHAR =\> 'Control character issue, maybe wrong encoded',
JSON\_ERROR\_SYNTAX =\> 'Syntaxerror',
];
echo '
## Could not decode json
';
echo 'json\_last\_error: ' . $jsonErrors[json\_last\_error()];
echo '
Raw:
';
echo '
' . print\_r($result, true) . '
';
return;
}
if (!isset($decodedResult['success'])) {
echo 'Invalid Response';
return;
}
if (!$decodedResult['success']) {
echo '
## No Success
';
echo '
' . $decodedResult['message'] . '
';
if (array\_key\_exists('errors', $decodedResult) && is\_array($decodedResult['errors'])) {
echo '
' . join('
', $decodedResult['errors']) . '
';
}
return;
}
echo '
## Success
';
if (isset($decodedResult['data'])) {
echo '
' . print\_r($decodedResult['data'], true) . '
';
}
return $decodedResult;
}
}
$client = new ApiClient(
//URL of shopware REST server
'http://www.domain.de/api',
//Username
'Administrator',
//User's API-Key
'Passwortxyz'
);
?\>
Ich habe jetzt einfach das aus den Beispielen gezogen, aber es erscheint nichts als weißes Bild. Die Datei, die ich dafür angelegt habe heißt rest\_api.php und liegt in einem von mir erstellten Unterverzeichnis des Shops.
Zunächst mal die erste Frage: Was muss ich überhaupt für einen Bentuzer und Passwort verwenden? Einfach den Benutzer meines Shop-Backends?
Und da nur weißes Bild erschienen ist, nehme ich mal an, ich habe etwas falsch gemacht oder? Soltle da nicht eigentlich "SUCCESS" stehen?