API Contact¶
Endpoint¶
POST /api/v1/contact¶
Envoie un message via le formulaire de contact. Un email est envoyé à l'administrateur.
Authentification : Non requise (endpoint public)
Rate limiting : throttle:5,1 — 5 requêtes par minute par IP
Requête¶
{
"name": "Jean Dupont",
"email": "jean@example.com",
"subject": "Partenariat club",
"message": "Bonjour, je souhaiterais discuter d'un partenariat avec votre plateforme."
}
| Champ | Type | Obligatoire | Contraintes |
|---|---|---|---|
name | string | Oui | max: 255 |
email | string | Oui | format email, max: 255 |
subject | string | Oui | max: 255 |
message | string | Oui | min: 10, max: 5000 |
Réponse succès (200)¶
Réponse erreur de validation (422)¶
{
"message": "The given data was invalid.",
"errors": {
"name": ["The name field is required."],
"email": ["The email must be a valid email address."],
"message": ["The message must be at least 10 characters."]
}
}
Réponse trop de requêtes (429)¶
Retourné si le rate limiter est déclenché (plus de 5 requêtes en 1 minute).
Architecture¶
Backend¶
- Controller :
App\Http\Controllers\Api\V1\ContactController - Request :
App\Http\Requests\Contact\ContactRequest - Mailable :
App\Mail\ContactFormMail - Template :
resources/views/emails/contact.blade.php - Route :
routes/api.php—POST /v1/contactavec middlewarethrottle:5,1
Frontend¶
- Page :
src/pages/ContactPage.tsx - Validation : Schema Zod (validation côté client identique au backend)
- Appel API :
apiClient.post('/v1/contact', data)
Configuration¶
L'email de destination est configuré par :
config('mail.contact_address')— variable d'environnementMAIL_CONTACT_ADDRESS- Fallback :
config('mail.from.address')— variable d'environnementMAIL_FROM_ADDRESS