Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
cours:intro_web_web_service_si3_2016_2017 [2017/04/12 13:02] tigli [Frequently Asked Quastions: FAQ] |
cours:intro_web_web_service_si3_2016_2017 [2019/02/06 07:13] (Version actuelle) tigli [Cours d'Introduction aux Web et Services Web] |
||
---|---|---|---|
Ligne 5: | Ligne 5: | ||
Cet ensemble de cours se déroule dans le prolongement de cours sur les protocoles UDP et TCP over IP. | Cet ensemble de cours se déroule dans le prolongement de cours sur les protocoles UDP et TCP over IP. | ||
Il s'appuie donc sur la programmation Socket pour les développements en TP telle que présentée dans | Il s'appuie donc sur la programmation Socket pour les développements en TP telle que présentée dans | ||
- | [[http://www.i3s.unice.fr/~lopezpac/cours/2015-2016/resprogconf/sockets.pdf|le support de cours Sockets de Dino Lopez]]. | + | [[http://www.i3s.unice.fr/~lopezpac/teach/archres.html|le support de cours Sockets de Dino Lopez]]. |
||| | ||| | ||
Ligne 19: | Ligne 19: | ||
---- | ---- | ||
- | === Cours d'introduction : du Web au Web services === | + | ==== Cours d'introduction : du Web au Web services ==== |
{{:cours:des_sockets_aux_web_services_intro_si3_cours_1.pdf| Transparents surpport du cours 1 : du Web au Web services}} | {{:cours:des_sockets_aux_web_services_intro_si3_cours_1.pdf| Transparents surpport du cours 1 : du Web au Web services}} | ||
Ligne 25: | Ligne 25: | ||
- | === Travaux pratiques : Mon premier serveur web dans mon serveur TCP/IP Socket === | + | ==== Travaux pratiques : Mon premier serveur web dans mon serveur TCP/IP Socket ==== |
||| | ||| | ||
{{:cours:td1_web_statique_et_http_si3_2017.pdf| Support de Travaux Pratiques : Web Statique}} | {{:cours:td1_web_statique_et_http_si3_2017.pdf| Support de Travaux Pratiques : Web Statique}} | ||
Ligne 59: | Ligne 59: | ||
---- | ---- | ||
- | === Cours sur le Web Dynamique et le protocole HTTP === | + | ==== Cours sur le Web Dynamique et le protocole HTTP ==== |
||| | ||| | ||
{{:cours:protocole_http_si3_et_web_dynamique_cours_2.pdf|Cours protocole HTTP et Pages Web Dynamiques}} | {{:cours:protocole_http_si3_et_web_dynamique_cours_2.pdf|Cours protocole HTTP et Pages Web Dynamiques}} | ||
- | === Travaux pratiques : Serveur de pages Web Dynamiques === | + | ==== Travaux pratiques : Serveur de pages Web Dynamiques ==== |
||| | ||| | ||
{{:cours:td2_web_dynamique_et_http_si3_2017.pdf|Support de Travaux Pratiques : Web Dynamique}} | {{:cours:td2_web_dynamique_et_http_si3_2017.pdf|Support de Travaux Pratiques : Web Dynamique}} | ||
Ligne 69: | Ligne 69: | ||
---- | ---- | ||
- | === Cours d'introduction aux Services Web === | + | ==== Cours d'introduction aux Services Web ==== |
||| | ||| | ||
{{:cours:cours_intro_services_web_rest_et_soap_si3_2016-2017.pdf|Cours sur Les principes des Services Web et des WS REST et SOAP}} | {{:cours:cours_intro_services_web_rest_et_soap_si3_2016-2017.pdf|Cours sur Les principes des Services Web et des WS REST et SOAP}} | ||
- | === Travaux pratiques : Introduction aux Web Services === | + | ==== Travaux pratiques : Introduction aux Web Services ==== |
||| | ||| | ||
{{:cours:td3a_formulaire_web_pour_tester_un_post_dans_un_browser_web2017.pdf| TD Utilisation d'un formulaire HTML pour générer des requêtes GET et POST}} | {{:cours:td3a_formulaire_web_pour_tester_un_post_dans_un_browser_web2017.pdf| TD Utilisation d'un formulaire HTML pour générer des requêtes GET et POST}} | ||
Ligne 111: | Ligne 111: | ||
===== Frequently Asked Quastions: FAQ ===== | ===== Frequently Asked Quastions: FAQ ===== | ||
- | == Comment écrire un chemin de fichier indépendant de l'OS ? == | + | [[cours:SI3:FAQ:FAQ_Web_WS| Page des FAQ "du Web aux Web Services en Python"]] |
- | on dispose également de la fonction os.path.join( chemin1, chemin2) qui permet de concaténer des chemins simplement en respectant les convention de l'OS de support : | + | |
- | <code> | ||
- | chemin=os.getenv('HOME') | ||
- | chemin=os.path.join(chemin,'Bureau') | ||
- | print (chemin) | ||
- | /home/user/Bureau | ||
- | </code> | ||
- | == Comment utiliser les pipes en python ?== | ||
- | * Le module os (import os) en python vous permet d'avoir accès à une API proche de POSIX dans laquelle vous trouvez : | ||
- | <code> | ||
- | os.fork() | ||
- | pipein, pipeout = os.pipe() | ||
- | ... = os.read(pipein, ...) | ||
- | os.write(pipeout, ...) | ||
- | os.close(pipein) | ||
- | os.close(pipeout) | ||
- | </code> | ||
- | |||
- | * Python permet aussi d'accéder à une struture de pipes à la création d'un processus. Voici quelques explications : | ||
- | <code> myPopen = subprocess.Popen(['cat', '-n']) : fait l'appel système non bloquant. | ||
- | si on veut pouvoir envoyer des données sur le stdin du process, il faut faire : myPopen = subprocess.Popen(['cat', '-n'], stdin = subprocess.PIPE). | ||
- | |||
- | si on veut pouvoir récupérer des données de la sortie standard et de la sortie d'erreur du process, il faut faire : | ||
- | <code> | ||
- | myPopen = subprocess.Popen(['cat', '-n'], stdout = subprocess.PIPE, stderr = subprocess.PIPE). | ||
- | </code> | ||
- | |||
- | myPopen.stdin, myPopen.stdout, myPopen.stderr : les entrées et sorties standard, quand elles ont été mises a subprocess.PIPE dans le constructeur. myPopen.stdout est de la classe file. | ||
- | | ||
- | Exemple : | ||
- | | ||
- | <code> | ||
- | import subprocess | ||
- | s = subprocess.Popen(['bc','-q'],stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.STDOUT) | ||
- | ... | ||
- | s.stdin.write(cmde+'\n') | ||
- | s.stdin.flush() | ||
- | res = s.stdout.readline() | ||
- | print "Resultat:",res | ||
- | | ||
- | s.stdin.close() | ||
- | s.stdout.close() | ||
- | | ||
- | </code> | ||
- | |||
- | == Commment puis-je détecter le type d'invocation GET ou POST de mon cgi-bin ? == | ||
- | L'information se trouve dans le champ d'entête du message HTTP. Il s'agit de RequestMethod. | ||
- | |||
- | == Commment savoir que le message HTTP à lire est fini ? == | ||
- | Le test de fin se basera sur la taille du message qui se trouve dans un champ d'entête du message HTTP. Il s'agit de Content-Lenght. | ||
===== Compléments de Cours et de TD ===== | ===== Compléments de Cours et de TD ===== | ||
- | {{ :cours:book_python.jpg?direct&100|}} | + | [[cours:SI3:FAQ:complement_cours_Web_WS|Page sur des compléments de cours "Web aux Web Services"]] |
- | ||| | + | ===== Archives ===== |
- | == Quelques Cours et Tutoriels sur Python == | + | |
- | + | ||
- | + | ||
- | ||| | + | |
- | + | ||
- | * [[https://books.google.fr/books?id=aJQILlLxRmAC&printsec=frontcover&hl=fr&source=gbs_ge_summary_r&cad=0#v=onepage&q&f=false|Python Programming: An Introduction to Computer Science Par John M. Zelle]] | + | |
- | + | ||
- | + | ||
- | + | ||
- | == Exemple Gestion de Chaines de caractères == | + | |
- | + | ||
- | * [[https://openclassrooms.com/courses/apprenez-a-programmer-en-python/notre-premier-objet-les-chaines-de-caracteres|Cours chaines de caractères en python]] | + | |
- | + | ||
- | + | ||
- | == Exemple de code Python d'un client / Serveur == | + | |
- | + | ||
- | * [[https://openclassrooms.com/courses/apprenez-a-programmer-en-python/le-reseau|Cours socket sous python]] | + | |
- | + | ||
- | * Code Python d'un client et d'un serveur TCP/IP {{:cours:code_client_server_socket_python.zip|code_client_server_socket_python.zip}} | + | |
- | * Attention : les méthodes send, recv sur les sockets manipulent des bytes. Vous ne pouvez donc envoyer et recevoir directement des chaines de caractères. La méthode ** encode ** sur une chaine pour récupérer une liste de bytes et ** decode ** sur une liste de bytes pour récupérer la chaine de caractères correspondantes | + | |
- | * Attention ce code est prévu pour Python <= 2.x. En python 3.x il faudar faire quelques modifications comme print à réécrire comme une fonction en print(). | + | |
- | + | ||
- | == Autre == | + | |
- | + | ||
- | *{{:cours:cours_annexe_web_authentification_-_suivi_de_session_-_multi_part.pdf| Web et Suivi de Session, Authentification, Contrôle d'Accès, ...}} | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | === ARCHIVES === | + | |
[[cours:intro_web_web_service_si3_2015_2016| Page du Cours "Du Web aux Web Services" 2016]] | [[cours:intro_web_web_service_si3_2015_2016| Page du Cours "Du Web aux Web Services" 2016]] | ||