是的,這很有可能,因爲REST依賴於非常抽象和靈活的資源概念。只要界面服從統一界面(標準方法,使用URI等),你可以做任何你喜歡的幕後。使某個HTTP接口成爲某種東西的最好理由之一是隱藏難看的實現細節,並呈現出這樣一個統一的接口。
你到底如何做,在你的語言或選擇的環境是一個更爲詳細的問題,但基本會是這樣的CherryPy的僞代碼:
class Table:
exposed = True
def __init__(self, tablename):
self.tablename = tablename
def PUT(self):
fields = parse_fields(cherrypy.request.body.read())
db.execute("CREATE TABLE %s (%s)" % (self.tablename, fields))
def DELETE(self):
db.execute("DROP TABLE %s" % self.tablename)
class Tables:
def _cp_dispatch(self, vpath):
return Table(vpath.pop(0))
你必須要連接自己的'db'連接邏輯,並找出客戶端應該對字段定義進行多少控制(以及哪種介質類型最適合與之通信,以及如何將該介質類型解析爲CREATE TABLE語句的有效SQL)。你還需要比「DROP TABLE {user input}」更好的安全性;)但希望這可以讓你走上正確的軌道。
這是可能的......但:你究竟試過了什麼?你的目標是什麼 ?什麼不工作? – Yahia 2012-04-09 09:37:07
我的目標是創建一個服務,使我可以動態創建表並將每個表依次用作資源。讓我舉個例子讓我說我想創建一個報表數據庫。許多客戶將數據推入其中,每個客戶都有自己的表。現在,如果新客戶端出現,必須立即創建新表,並且可以將數據推送到該表中。你有沒有得到它的要點?讓我知道你是否需要更多信息。謝謝! – mssrivatsa 2012-04-09 09:42:16
好的......和:你有什麼嘗試?什麼不工作? – Yahia 2012-04-09 09:43:02