Page tree
Skip to end of metadata
Go to start of metadata

Ab V5.1.1

Mit der Klasse addon_rest_v2 ist es möglich, eine REST-Schnittstelle im Stil der API-V2 bereitzustellen.

Funktionen, die in der Schnittstelle verfügbar sein sollen, müssen als public deklariert werden. Der Funktionsname muss mit der HTTP-Methode beginnen. 

Beispiel:

Der Aufruf 

PUT https://**crm_url**/rest_v2/addon.php/**Addon-Prefix**/my_rest_class/data

wird in der Add-on-Klasse wie folgt aufgelöst:

class my_rest_class extends addon_rest_v2
{
    public function put_data()
	{
		$this->set_result(200, 'OK');
	}
}


Die URL basiert auf folgendem Schema

https://**crm_url**/rest_v2/addon.php/**Addon-Prefix**/**Pfad-zur-Rest-Klasse**/**Methode**


Es können Daten im POST/PUT-Body und als Query-Parameter übergeben werden. Query-Parameter stehen im Array $request zur Verfügung.



1. Klassen-Methoden

1.1. add_header

Syntax:

void add_header(string $header_string, bool $replace = false)

Beschreibung:

Mit dieser Methode kann ein zusätzlicher Response-Header gesetzt werden. Der Parameter $replace gibt an, ob ein gleichartiger bereits gesetzter Header ersetzt werden soll.

Beispiel:

class my_rest_class extends addon_rest_v2
{
    public function put_data()
	{
		$this->add_header('Custom-Header: abcd');
		...
		$this->set_result(200, 'OK');
	}
}

1.2. get_body_file

Syntax:

bool get_body_file(string $filename)

Beschreibung:

Die Methode schreibt den gesamten POST-/PUT-Body in die Datei $filename. Wenn erfolgreich, wird TRUE zurückgegeben, ansonsten FALSE.

Die Datei wird im Add-on-Datenverzeichnis angelegt.

Beispiel:

class my_rest_class extends addon_rest_v2
{
    public function put_data()
	{ 
        $success = $this->get_body_file('test');
		...
        $this->set_result(200, 'OK');
	}
}

1.3. get_body_params

Syntax:

array get_body_params()

Beschreibung:

Diese Methode gibt den JSON-dekodierten Inhalt des POST-/PUT-Bodies zurück. Kann der Body nicht dekodiert werden, ist die Rückgabe NULL.

Beispiel:

class my_rest_class extends addon_rest_v2
{
    public function put_data()
	{
		$post_params = $this->get_body_params();
		if (!is_array($post_params)) {
			$this->throw_error(500, 'Missing Body');
		}
		...
		$this->set_result(200, 'OK');
	}
}

1.4. get_body_stream

Syntax:

resource get_body_stream()

Beschreibung:

Die Methode öffnet den POST-/PUT-Body als Stream und gibt eine Ressource zurück, die darauf zeigt. Kann der Stream nicht geöffnet werden, wird NULL zurückgegeben.

Beispiel:

class my_rest_class extends addon_rest_v2
{
    public function put_data()
	{
		$in = $this->get_body_stream();
		if (!is_resource($in)) {
			$this->throw_error(500, 'Missing Body');
		}
		$body_content = fgets($in);
		...
		$this->set_result(200, 'OK');
	}
}

1.5. set_result

Syntax:

void set_result(int $status_code, string $message, array $data = array())

Beschreibung:

Mit dieser Methode wird eine HTTP-Response generiert. $data enthält Daten, die JSON-kodiert als Response ausgegeben werden.

Beispiel:

class my_rest_class extends addon_rest_v2
{
    public function put_data()
	{
		$this->add_header('Custom-Header: abcd');
		$this->set_result(200, 'OK', array('test' => 'successful'));
	}
}

1.6. throw_error

Syntax:

void throw_error(int $err_code, string $err_message)

Beschreibung:

Mit dieser Methode wird ein HTTP-Fehler mit Code $err_code und Message $message erzeugt. Der Request wird damit abgebrochen.

Beispiel:

class my_rest_class extends addon_rest_v2
{
    public function put_data()
	{
		$in = $this->get_body_stream();
		if (!is_resource($in)) {
			$this->throw_error(500, 'Missing Body');
		}
		$body_content = fgets($in);
		... 
		$this->set_result(200, 'OK');
	}
}

2. geerbte Methoden

Alle Methoden aus addon_base.


  • No labels