Nedávno jsem dostal za úkol popsat rozhraní pro komunikaci s naším systémem pro dodavatele jistého zařízení. Řekl jsem si, že nejlepší bude udělat i prototyp, aby si to mohli rovnou vyzkoušet. Jak na to? Naštěstí jsem před pár měsíci seznámil s webovým frameworkem Bottle.py. On sice neoslní výčtem schopností, ale má obrovskou výhodu: Je v jednom souboru. Takže můj prototyp bude:
Vlastní bottle.py je v základu jednoduchá. Má router ovládaný dekorátory, má templating engine (který se dá nahradit jiným templating enginem, ale pak ztratíme tu výhodu jednoho souboru). Má nějaké pluginy, ale zase jimi přijdeme o výhodu jednoho souboru. Tak začneme. Vlastní routing je jednoduchý:
@bottle.get("/") def get_index(): # ... @bottle.post("/save") def save_form(): value = bottle.request.forms["key"] # post data @bottle.route("/api/exec", method=["POST", "GET"]) def do_exec(): # whateverKromě routingu už tady vidíte globální proměnnou bottle.request. Z ní můžeme přistupovat k parametrům requestu, a taky k datům z metody POST. Není to unifikované, jako ve WebOb (Pyramid, appenginu, a dalších), k datům z GETu přistoupíte pomocí bottle.request.params, k datům z POSTu přes bottle.request.forms. A ještě jedna pomůcka: Když váš handler vrátí dict, bottle.py jej převede na json a vrátí Content-type: application/json. A to už nám na prototyp API skoro stačí.
Chce to ukázku? Stačí takhle primitivní?
Já jsem zkoušel cherry.py a skončil u bottle. Ale o nějakých zkušenostech zatím nemůže být řeč, v podstatě jsem se tak akorát stihl seznámit s API těch frameworků (Višňa a Flaša).
Webpy jsem nezkoušel.
To srovnání a zkušenosti by mně také docela zajímaly, jestli někdo máte.
Jmenuju se Petr Blahoš. Programuju něco přes 20 let. Tady se snažím psát hlavně o Pythonu, webovém frameworku Pyramid, a občas i o něčem úplně jiném.
Přečteno 19 224×
Přečteno 11 852×
Přečteno 9 344×
Přečteno 8 802×
Přečteno 8 592×