TurboGears - Aplikasi RESTful

REST adalah singkatan dari REpresentasi State Transfer. REST adalah arsitektur berbasis standar web dan menggunakan Protokol HTTP untuk komunikasi data. Ini berputar di sekitar sumber daya di mana setiap komponen adalah sumber daya dan sumber daya diakses oleh antarmuka umum menggunakan metode standar HTTP. REST pertama kali diperkenalkan olehRoy Fielding in 2000.

Apa itu RestController

RestController di TurboGears menyediakan mekanisme untuk mengakses metode permintaan, bukan hanya URL. Kata-kata standar HTTP meliputi: GET, POST, PUT, dan DELETE. RestController mendukung ini, dan juga menambahkan beberapa pintasan untuk pengiriman URL yang membuat menampilkan data sebagai formulir dan daftar, sedikit lebih mudah bagi pengguna.

Untuk menjelaskan bagaimana RESTful bekerja dengan TurboGears, kami akan mendefinisikan layanan web sederhana yang menampilkan daftar siswa.

Kode untuk model siswa diberikan di bawah ini -

model \ 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 = '')

Sekarang buat pengontrol berdasarkan RestController dan berikan fungsi tampilan untuk membuat daftar siswa dalam format json.

Controllers \ 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)

Pasang StudentController ini di RootController aplikasi dengan memasukkan baris berikut di root.py -

from hello.controllers.student import StudentController

class RootController(BaseController):

   students = StudentController()

Pergi ke http://localhost:8080/students itu akan memberikan daftar siswa kami yang dikodekan dalam format json.

Kami menggunakan metode posting untuk menentukan bagaimana kami akan menyimpan siswa kami ke database. Metode ini dipanggil setiap kali http://localhost:8080/student url diakses menggunakan permintaan 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)

Menggunakan get_one() metode, kita dapat menampilkan satu item dari database ke pengguna -

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

PUT adalah metode yang digunakan untuk memperbarui catatan yang ada menggunakan 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)

Kuda kerja penghapusan dilampirkan ke metode post_delete. Di sini kami benar-benar menghapus catatan dari database, dan kemudian mengarahkan kembali ke halaman daftar -

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