はい、それは可能です。RESTは非常に抽象的で柔軟なリソースの概念に依存しているからです。インターフェイスが統一されたインターフェイス(標準的な方法、URIの使用など)に従っている限り、舞台裏で好きなことを行うことができます。何かへのHTTPインターフェースを作成する最も良い理由の1つは、醜い実装の詳細を隠し、そのような統一されたインターフェースを提示することです。
選択した言語または環境でそれを正確にどのように行うかは、はるかに詳細な質問ですが、基本は次のような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'接続ロジックを自分で接続し、クライアントがフィールド定義をどの程度制御する必要があるか(および、それを伝達するのに最適なメディアタイプと、そのメディアタイプを有効なSQLに解析する方法)を把握する必要があります。 CREATE TABLEステートメントの場合)。また、「DROP TABLE {user input}」よりもはるかに優れたセキュリティが必要になります;)しかし、うまくいけば、これで正しい方向に進むことができます。