protected function render($result) {

        $profiler = $this->container->has('profiler') ? $this->container->get('profiler') : false;

        if ($profiler) {
            $profiler->mark('beforeRender');
        }

        // C'est un string => HTML
        if (is_string($result)) {

            // On modifie le type MIME de la réponse.
            $this->mimeType = 'text/html';

            $data = $result;

        } elseif (is_object($result) || is_array($result)) { // C'est un objet => JSON

            $r = (object) $result;

            // On modifie le type MIME de la réponse.
            $this->mimeType = 'application/json';

            // Si l'on a un code de statut HTTP.
            if (property_exists($r, 'status')) {
                switch ($r->status) {
                    case 400:
                        $status = '400 Bad Request';
                        break;
                    case 401:
                        $status = '401 Unauthorized';
                        break;
                    case 403:
                        $status = '403 Forbidden';
                        break;
                    case 404:
                        $status = '404 Not found';
                        break;
                    case 500:
                        $status = '500 Internal Server Error';
                        break;
                    default:
                        $status = '200 OK';
                        break;
                }
                $this->setHeader('status', $status);

                if (is_object($result)) {
                    unset($result->status);
                } else {
                    unset($result['status']);
                }

            }

            $data = json_encode($result);

        } else {
            $text = (new LanguageFactory())->getText();
            $this->raiseError($text->translate('APP_ERROR_INVALID_RESULT'));
        }

        // On affecte le résultat au corps de la réponse.
        $this->setBody($data);

        if ($profiler) {
            $profiler->mark('afterRender');
        }

    }