TurboGears - बाकी अनुप्रयोगों

बाकी खड़ा है REप्रस्तुतिकरण Sटेट Transfer। REST वेब मानकों पर आधारित आर्किटेक्चर है और डेटा संचार के लिए HTTP प्रोटोकॉल का उपयोग करता है। यह एक संसाधन के चारों ओर घूमता है जहां हर घटक एक संसाधन है और एक संसाधन HTTP मानक विधियों का उपयोग करके एक सामान्य इंटरफ़ेस द्वारा एक्सेस किया जाता है। REST द्वारा पहली बार शुरू किया गया थाRoy Fielding in 2000

एक RestController क्या है

TurboGears में RestController अनुरोध प्रणाली को एक्सेस करने के लिए एक तंत्र प्रदान करता है, न कि केवल URL। मानक HTTP वर्बेज में शामिल हैं: GET, POST, PUT, और DELETE। RestController इनका समर्थन करता है, और URL प्रेषण के लिए कुछ शॉर्टकट भी जोड़ता है जो डेटा को रूपों और सूचियों के रूप में प्रदर्शित करता है, उपयोगकर्ता के लिए थोड़ा आसान है।

यह समझाने के लिए कि रीस्टफुल टर्बोजियर्स के साथ कैसे काम करता है, हम एक सरल वेबसेवा को परिभाषित करने जा रहे हैं जो छात्रों की सूची को उजागर करती है।

छात्र मॉडल के लिए कोड नीचे दिया गया है -

मॉडल \ student.py

# -* - coding: utf-8 -*-
from sqlalchemy import *

from sqlalchemy.orm import mapper, relation, relation, backref
from sqlalchemy import Table, ForeignKey, Column
from sqlalchemy.types import Integer, Unicode, DateTime
from hello.model import DeclarativeBase, metadata, DBSession
from datetime import datetime

class student(DeclarativeBase):
   __tablename__ = 'student'
   
   uid = Column(Integer, primary_key = True)
   name = Column(Unicode(20), nullable = False, default = '')
   city = Column(Unicode(20), nullable = False, default = '')
   address = Column(Unicode(100), nullable = False, default = '')
   pincode = Column(Unicode(10), nullable = False, default = '')

अब RestController के आधार पर एक नियंत्रक बनाएं और json प्रारूप में छात्रों की सूची को सूचीबद्ध करने के लिए एक दृश्य फ़ंक्शन प्रदान करें।

नियंत्रकों \ student.py

from tg import RestController
from tg import expose
from hello import model
from hello.model import DBSession
from hello.model.student import student
from tg.decorators import with_trailing_slash

class StudentController(RestController):
   @expose('json')
   def get_all(self):
      students = DBSession.query(student).all()
      return dict(students=students)

निम्नलिखित में निम्नलिखित पंक्तियों को शामिल करके एप्लिकेशन के RootController में इस StudentController को माउंट करें root.py -

from hello.controllers.student import StudentController

class RootController(BaseController):

   students = StudentController()

जा रहा हूँ http://localhost:8080/students यह हमारे छात्रों की सूची json प्रारूप में एन्कोडेड प्रदान करेगा।

हम अपने छात्र को डेटाबेस में सहेजने के बारे में जाने के लिए पोस्ट विधि का उपयोग करते हैं। जब भी इस विधि को बुलाया जाता है http://localhost:8080/student url को POST अनुरोध का उपयोग करके एक्सेस किया जाता है -

@expose('json')
def post(self, name, city, address, pincode):
   newstudent = student(name = name, city = city, address = address, pincode = pincode)
   DBSession.add(newstudent)
   DBSession.flush()
   return dict(student = newstudent)

का उपयोग करते हुए get_one() विधि, हम डेटाबेस से उपयोगकर्ता के लिए एक आइटम प्रदर्शित कर सकते हैं -

@expose('json')
def get_one(self, movie_id):
   newstudent = DBSession.query(student).get(uid)
   return dict(movie = movie)

PUT, REST का उपयोग करके मौजूदा रिकॉर्ड को अपडेट करने के लिए प्रयोग की जाने वाली विधि है -

@expose('json')
def put(self, name = name, city = city, address =  address, pincode = pincode, **kw):
   newstudent = DBSession.query(student).get(name)
   newstudent.name = name
   newstudent.city = city
   newstudent.address = address
   newstudent.pincode = pincode
   return dict(student = newstudent)

डिलीट का काम-घोड़ा पोस्ट_डेली विधि से जुड़ा हुआ है। यहां हम वास्तव में डेटाबेस से रिकॉर्ड को हटाते हैं, और फिर वापस लिस्टिंग पृष्ठ पर भेजते हैं -

@expose('json')
def post_delete(self, uid, **kw):
   newstudent = DBSession.query(student).get(uid)
   DBSession.delete(newstudent)
   return dict(movie = newstudent.uid)