Ik heb een API client class.
In de constructor regel ik de connectie met het api token etc. Verder bevat het een private getRequest en postRequest method. En unieke api call methods die de get of post request methodes gebruiken.
Elke api call heeft eigenlijk de zelfde functionaliteit. Bij een 200 wil ik altijd het object returnen, en bij elke andere foutieve status code wil ik gewoon die melding returnen.
Dit doe ik nu in elke call met een switch statement. Nu zei iemand dat dat slordige code wordt, en dat ik interfaces moet gaan leren. Alleen kom ik er niet echt uit.
Ik heb hier bijvoorbeeld 1 van mijn api calls
public function postMembership($body){
$request = $this->postRequest('/Memberships', $body);
$response = json_decode(wp_remote_retrieve_body($request), true);
$response['statusCode'] = json_decode(wp_remote_retrieve_response_code($request), true);
switch($response['statusCode']){
case 200:
return $response;
case 400:
case 401:
case 404:
case 500:
return $response['error']['message'];
default:
return $response;
}
}
Maar zou niet zo gauw weten hoe ik die switch kan aanpassen naar een interface.
[size=xsmall]Toevoeging op 02/06/2022 16:00:58:[/size]
Ik had een beetje gepuzzeld, en kwam er achter dat ik het zo een beetje kan aanpakken
$codeMapping = [
200 => ShowResponseHandler::class
500 => ShowErrorHandler::class
];
$handlerClass = $codeMapping[$statusCode];
$handler = new $handlerClass;
return $handler->handler($response);