Servir un SVG¶
Objectif : renvoyer un QR Code SVG depuis un contrôleur.
Ce que vous allez apprendre : QrCodeResponse.from_text accepte un argument
fmt.
Avec fmt="svg", la réponse porte l'en-tête Content-Type: image/svg+xml et son
corps est le document SVG.
Deuxième palier du niveau intermédiaire.
Ce que ce starter montre¶
- demander un SVG avec
fmt="svg"; - comprendre la différence d'en-tête entre PNG et SVG.
1. Le contrôleur SVG¶
# mvc/controllers/qrcode_controller.py
from core.http.request import Request
from core.http.response import Response
from core.mvc.controller.base_controller import BaseController
from forge_mvc_qrcode import QrCodeResponse
class QrCodeController(BaseController):
@staticmethod
def show_svg(request: Request) -> Response:
return QrCodeResponse.from_text("https://forgemvc.com", fmt="svg")
Comprendre ce code¶
fmt="svg"demande une sortie SVG plutôt que PNG.- L'en-tête
Content-Typede la réponse devientimage/svg+xml. fmt="png"(la valeur par défaut) reste disponible pour le PNG.
2. Choisir le format à la demande¶
@staticmethod
def show(request: Request) -> Response:
fmt = request.query("format", "png")
return QrCodeResponse.from_text("https://forgemvc.com", fmt=fmt)
Comprendre ce code¶
- L'application lit le format voulu, par exemple depuis la requête.
- Un format inconnu lèvera
QrCodeError: nous verrons comment le gérer au niveau avancé.
À retenir¶
fmt="svg"sert un SVG (image/svg+xml),fmt="png"sert un PNG (image/png).- Le choix du format reste explicite, décidé par l'application.
Après ce starter¶
Les deux formats ont chacun leur type MIME.
Regardons ces types de plus près.