Forum » Programiranje » [python] restful webservici
[python] restful webservici
ragezor ::
Za zemantin studentski izziv delam distribuirane stevce in zahteve so naslednje:
Sistem mora podpirati naslednje ukaze:
povecaj stevec C za 1
povecaj stevec C za n
resetiraj stevec C na 0
Zdaj delam nek (restful (ne vem tocno kaj to pomeni)) api in zgleda takole:
GET /counters
ustvari counter v bazi in vrne id
primer returna:
{"id": "5346b2b492d5cd33a13a8004"}
GET /counters/"counter_id"
vrne vrednost counterja
{"n": 134}
POST /counters/"counter_id"
poveca counter za +1
{"ok": 1.0, "err": null, "connectionId": 164, "n": 1, "updatedExisting": true, "lastOp": {"i": 1, "t": 1397145098}}
GET /counters/"counter_id"/reset
ponastavi counter nazaj na 0
{"ok": 1.0, "err": null, "connectionId": 164, "n": 1, "updatedExisting": true, "lastOp": {"i": 1, "t": 1397145098}}
primer error outputa:
{"e": "document with object_id 5344688592d5cd1d4d1d4854 does not exist"}
{"e": "foo_0as is not a valid ObjectId"}
Moja vprasanja so:
na kak nacin izpostavim povecaj stevec za N?
a je kul kako vracam podatke? vrnem v bistvu ves response mongodbja, le pri ustvarjanju objekta in pri vrednosti counterja, zapakiram v dictionary, da ne vrnem gole vrednosti.
moja filozofija je, da se naj client ukvarja s parsanjem rezultatov, da je moj server cim hitrejsi.
moram kaj spremeniti, da bo api restful?
pa ce mam ze dolg post se malo kode
v tornaduju pisem handlerje takole:
valda tole ne deluje ampak prikaze point kaj bi rad naredil
torej tiste kode, ki dobi object_id iz counter_id, nebi rad copy pastal v vse handlerje
Sistem mora podpirati naslednje ukaze:
povecaj stevec C za 1
povecaj stevec C za n
resetiraj stevec C na 0
Zdaj delam nek (restful (ne vem tocno kaj to pomeni)) api in zgleda takole:
GET /counters
ustvari counter v bazi in vrne id
primer returna:
{"id": "5346b2b492d5cd33a13a8004"}
GET /counters/"counter_id"
vrne vrednost counterja
{"n": 134}
POST /counters/"counter_id"
poveca counter za +1
{"ok": 1.0, "err": null, "connectionId": 164, "n": 1, "updatedExisting": true, "lastOp": {"i": 1, "t": 1397145098}}
GET /counters/"counter_id"/reset
ponastavi counter nazaj na 0
{"ok": 1.0, "err": null, "connectionId": 164, "n": 1, "updatedExisting": true, "lastOp": {"i": 1, "t": 1397145098}}
primer error outputa:
{"e": "document with object_id 5344688592d5cd1d4d1d4854 does not exist"}
{"e": "foo_0as is not a valid ObjectId"}
Moja vprasanja so:
na kak nacin izpostavim povecaj stevec za N?
a je kul kako vracam podatke? vrnem v bistvu ves response mongodbja, le pri ustvarjanju objekta in pri vrednosti counterja, zapakiram v dictionary, da ne vrnem gole vrednosti.
moja filozofija je, da se naj client ukvarja s parsanjem rezultatov, da je moj server cim hitrejsi.
moram kaj spremeniti, da bo api restful?
pa ce mam ze dolg post se malo kode
v tornaduju pisem handlerje takole:
class CounterIDHandler(RequestHandler): @gen.coroutine def get(self, counter_id): try: object_id = bson.objectid.ObjectId(counter_id) except bson.errors.InvalidId as e: self.finish(json_encode({'e': str(e)})) return # tle hocem zakljucit izvajanje class CounterHandler(CounterIDHandler): @gen.coroutine def get(self, counter_id): super().get(counter_id) print("tole se nebi smelo izpisat, ce pride v super metodi do errorja ") try: # tle bi rad uporabil object_id except Exception as e: self.finish(json_encode({'e': str(e)}))
valda tole ne deluje ampak prikaze point kaj bi rad naredil
torej tiste kode, ki dobi object_id iz counter_id, nebi rad copy pastal v vse handlerje
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | podatkovne baze pomočOddelek: Programiranje | 3057 (2610) | kr?en |
» | SQL uporaba imena spremenljivke stringuOddelek: Programiranje | 983 (877) | BlueKnight |
» | SQL težavaOddelek: Programiranje | 5186 (4468) | joseti |
» | Napaka pri povezavi z bazo - c#Oddelek: Programiranje | 1008 (872) | Mitja Bonča |
» | Težava pri SQL stavku z neznanim stolpcemOddelek: Programiranje | 1166 (1050) | destiny |