Diferència entre revisions de la pàgina «Web Services amb Pyramid i Cornice»

De Cacauet Wiki
Salta a la navegació Salta a la cerca
Línia 14: Línia 14:
  
 
=== Preparant scaffolds/buildout ===
 
=== Preparant scaffolds/buildout ===
Abans de començar cal crear un nou projecte amb Pyramid ([[Buildout]]) i cal afegir la '''llibreria cornice''' al '''buildout.cfg'''. Teniu 2 opcions:
+
Abans de començar cal crear un nou projecte amb Pyramid ([[Buildout]]) i cal afegir la '''llibreria cornice''' al '''buildout.cfg'''.
 +
 
 +
Teniu 2 opcions:
 
# Instal·lar el cornice al vostre virtualenv, amb el què es crearà una nova plantilla que podeu utilitzar creant un nou ''scaffold'' per cornice: <pre>(env) $ pcreate -t cornice nomprojecte</pre>
 
# Instal·lar el cornice al vostre virtualenv, amb el què es crearà una nova plantilla que podeu utilitzar creant un nou ''scaffold'' per cornice: <pre>(env) $ pcreate -t cornice nomprojecte</pre>
 
# Si volem incorporar cornice a un projecte Pyramid normal, cal modificar:
 
# Si volem incorporar cornice a un projecte Pyramid normal, cal modificar:
 
#* __init__.py , cal afegir:<pre>  config.include("cornice")</pre>
 
#* __init__.py , cal afegir:<pre>  config.include("cornice")</pre>
#* setup.py , als "requires" cal afegir "cornice", "PasteScript" i "waitress".
+
#* <strike>setup.py , als "requires" cal afegir "cornice", "PasteScript" i "waitress".</strike>
 +
 
 +
En qualsevol dels 2 casos hem d'afegir les llibreries del buildout:
 +
* cornice
 +
* PasteDeploy
 +
 
 
<br>
 
<br>
  

Revisió del 09:29, 8 maig 2013

Web services: teoria

...

Un web service vé a ser un servei al que se li poden fer consultes a través del protocol HTTP o HTTPS.

No té perquè respondre HTML, i el més habitual és que no ho faci, ja que ens complicarà el parsejar les dades i introduïr-les al nostre programa. És més habitual utilitzar JSON (o XMLRPC o SOAP).

Per Python/Pyramid treballarem amb JSON: wikipedia i json.org.


Web Services a Pyramid: llibreria Cornice

Package: Cornice

Preparant scaffolds/buildout

Abans de començar cal crear un nou projecte amb Pyramid (Buildout) i cal afegir la llibreria cornice al buildout.cfg.

Teniu 2 opcions:

  1. Instal·lar el cornice al vostre virtualenv, amb el què es crearà una nova plantilla que podeu utilitzar creant un nou scaffold per cornice:
    (env) $ pcreate -t cornice nomprojecte
  2. Si volem incorporar cornice a un projecte Pyramid normal, cal modificar:
    • __init__.py , cal afegir:
         config.include("cornice")
    • setup.py , als "requires" cal afegir "cornice", "PasteScript" i "waitress".

En qualsevol dels 2 casos hem d'afegir les llibreries del buildout:

  • cornice
  • PasteDeploy


Desenvolupant el web service

Anem al lío:

  • Recorda que treballarem amb JSON: wikipedia i json.org.
    Altres tecnologies: Java utilitza XMLRPC, i Microsfot SOAP.
  • Doc.oficial: http://packages.python.org/cornice/
  • Interessant i essencial el "Quick Start for people in a hurry" (emmagatzema objectes JSON), però hi ha un error: on diu _VALUES.set(...) en realitat ha de ser:
    _VALUES[key] = json.loads(request.body)
  • També necessitarem CURL (amb apt-get). Consulta el man o també online: http://curl.haxx.se/docs/manpage.htm
    • OJU amb JSON i curl, les cometes han de ser simples per tot el objecte JSON i dobles pels elements:
      $ curl http://el/meu/servei -d '{"nom1":"valor1",...}'
    • Més opcions curl: -X {GET|POST|PUT}
  • Llibreria PycURL: http://pycurl.sourceforge.net/ ens permet fer crides des de python amb cURL.
    • Oju: s'ha d'instal·lar al sistema (o al virtualenv) i cal afegir prèviament els paquets: python2.?-dev i libcurl4-gnutls-dev
    • Després ja es pot instal·lar amb
      $ easy_install pycurl
  • Millor que pycurl és urllib que ja està al sistema i per fer el fet anirem més ràpids
  • ...