Travail sur une API REST pour un processeur PDF en utilisant Mpdf (et tfox symfony bundle) sur Symfony 3 Framework. J'ai créé deux requêtes GET, une avec aucun paramètre à tester, et une avec le paramètre (URL du fichier HTML) que je veux lire et ensuite convertir en PDF.REST GET avec paramètre ignoré, PHP Symfony 3 Mpdf
La fonction GET générique:
/**
*
* @Rest\Get("/create")
*/
public function createPDFAction(){
$mpdfService = $this->get('tfox.mpdfport');
$html = "<h1> Hello </h1>";
$mpdf = $mpdfService->getMpdf();
$mpdf->WriteHTML($html);
$mpdf->Output();
exit;
}
La deuxième fonction GET avec le paramètre:
/**
* @param $htmlSource
* @Rest\Get("/create/{htmlSource}")
*/
public function createPDFFromSourceAction($htmlSource){
$mpdfService = $this->get('tfox.mpdfport');
$html = file_get_contents($htmlSource);
$mpdf = $mpdfService->getMpdf();
$mpdf->WriteHTML($html);
$mpdf->Output();
exit;
}
Le problème est, quand je l'appelle la deuxième fonction en utilisant le navigateur ou Postman la première fonction est toujours renvoyée à la place et je reçois le fichier PDF avec "Bonjour", si je supprime la première fonction GET, j'obtiens erreur "aucun itinéraire trouvé pour GET/créer"
J'ai étudié:
- L'URL du PDF est correct, je l'ai inséré manuellement en première fonction et travaillé
- Pas d'erreur de syntaxe, je copiais la même fonction sans les paramètres et travaillé
Les appels que je fais sont:
- http://localhost:8000/create celui-ci fonctionne
- http://localhost:8000/create?htmlSource=PATH-TO-FILE-LOCALLY celui-ci doesnot travail
Si je mets le PATH TO-FILE-LOCALEMENT en fonction 1 manuellement fonctionne très bien
J'ai donc 2 questions:
- Depuis que je suis nouveau au repos et LAMP, devrais-je utiliser GET ou d'autres? Mon but est de lire le formulaire HTML que l'utilisateur remplira dans une variable et de le passer à Mpdf qui le convertira en PDF et retournera ce PDF pour l'afficher ou le télécharger
- Pourquoi seule la première fonction GET est en cours de lecture?
Remarques: Je développe sous Linux, avec PHPStorm, PHP 7, Symfony 3, localhost, le fichier html je teste avec est sur ma machine locale
Point latéral: Dans le cas où cela est résolu, Je suis supposé télécharger ceci sur le serveur de mon client (qui est Apache) - avez-vous des guides sur la façon de le faire et sur ce que devraient être les URL modifiées?
Merci à tous à l'avance
Mises à jour:
J'ai changé la fonctionnalité POST méthodes et il fonctionne maintenant très bien:
/**
* @Rest\Post("/mPDF/")
*/
public function createPDFAction(Request $request){
$source = $request->get('source');
if($source == ""){
return new View('No Data found', Response::HTTP_NO_CONTENT);
}
$mpdfService = $this->get('tfox.mpdfport');
$html = file_get_contents($source);
$mpdf = $mpdfService->getMpdf();
$mpdf->WriteHTML($html);
$mpdf->Output();
exit;
}
Après la publication sur le serveur de production Apache et certains configuration tweaks le site est maintenant en ligne!- mais maintenant je suis confronté à une nouvelle question que je vais poster une nouvelle question avec toutes les informations de configuration que j'ai - essentiellement la méthode POST EXPEDITEUR { "error": { "code": 405, "message": "Method Not Allowed" } }
http://www.restapitutorial.com/ – MyMomSaysIamSpecial
Je devine de votre réponse que ma question est assez stupide: D – Sherbieny
apprécierait si quelqu'un pourrait signaler l'erreur s'il vous plaît – Sherbieny