REST – Einführung in die API Erstellung

Fehlerbehandlung – HTTP-Status-Codes

Die Fehlerbehandlung läuft bei einer API für gewöhnlich über die entsprechenden Status-Codes. Wir könnten unseren UserController also folgendermaßen erweitern.

public function indexAction()
{
	try {
		$input = json_decode(file_get_contents('php://input'), true);

		if ($_SERVER['REQUEST_METHOD'] == 'GET') {
			$result = $this->get((int)$_GET['id']);
		} elseif ($_SERVER['REQUEST_METHOD'] == 'DELETE') {
			$result = $this->delete((int)$_GET['id']);
		} elseif ($_SERVER['REQUEST_METHOD'] == 'POST') {
			$result = $this->create($input);
		} elseif ($_SERVER['REQUEST_METHOD'] == 'PUT') {
			$result = $this->update($input);
		}

		header('HTTP/1.0 200 OK');
	} catch (ApiException $e) {
		if ($e->getCode() == ApiException::MALFORMED_INPUT) {
			header('HTTP/1.0 409 Bad Request');
		}

		$result = ['message' => $e->getMessage()];
	}

	header('Content-Type: application/json');
	echo json_encode($result);
}

 

Wir verwenden eine eigene Exception für die API, die Fehlercodes für uns als Konstanten beinhaltet:

class ApiException extends \Exception
{
	const AUTHENTICATION_FAILED = 1;
	const MALFORMED_INPUT       = 2;
}

Damit können die einzelnen Endpunkte sich auf den Fehlercode beschränken und unser „Error-Handler“ kümmert sich um die korrekte Kommunikation mit dem Client.


Weiter mit API-Sicherheit