» »

[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:
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 ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

podatkovne baze pomoč

Oddelek: Programiranje
193036 (2589) kr?en
»

SQL uporaba imena spremenljivke stringu

Oddelek: Programiranje
7967 (861) BlueKnight
»

SQL težava

Oddelek: Programiranje
365133 (4415) joseti
»

Napaka pri povezavi z bazo - c#

Oddelek: Programiranje
71003 (867) Mitja Bonča
»

Težava pri SQL stavku z neznanim stolpcem

Oddelek: Programiranje
81158 (1042) destiny

Več podobnih tem