RESTful架構,目前是比較流行的一種互聯網軟件架構。REST,即Representational State Transfer的縮寫。
說白點就是網站即軟件,再白點就是一個服務軟件支持http的四種方法:
GET用來獲取資源,POST用來新建資源、更新資源,PUT用來更新資源,DELETE用來刪除資源。
并對外提供一個或多個URI,每個URI對應一個資源;客戶端通過URI配合上面的方法就可以和服務
段的軟件交互??蛻舳酥饕菫g覽器,使用restful框架的軟件對http的支持也為了web應用帶來方便。
REST這個詞,是Roy Thomas Fielding在他2000年的博士論文中提出的。他的貢獻很多,
可以了解一下。本人工作的方向是SDN,也算是比較潮的東東,其中floodlight就用到了restful框架。
開發者為軟件開發出一些功能,并提供URI api,用戶就可以利用瀏覽器、curl等工具通過提供的URI
從軟件中獲得想要的信息或者設置軟件的功能。
對于發開者來說,就是提供URI和URI對應的資源,并將他們對應上,類似dicts={'/path?':resource}。
比如重寫http GET方法:首先獲得客戶端請求的url,解析url然后判斷其對應的URI,由于URI與應一個資源,
那么url就可以訪問這個資源了。具體實現上資源也就是方法或者一個類,要看具體實現了。
下面來個很簡單的例子,因為對于真正功能強大的restful來說,這個例子有幾點不足,但是作為簡單的演示,
應該夠了。
代碼如下:
#-*-coding:UTF-8-*-
import socket,sys,urllib
from BaseHTTPServer import *
class Restful(BaseHTTPRequestHandler): #所有rest的父類
def __init__(self,request, client_address, server):
BaseHTTPRequestHandler.__init__(self,request, client_address, server)
self.dp=None
self.router=None
def basepath(self):
pass
def getresetlet(self):
pass
def send(self,src):
self.send_response(200)
self.send_header("Content-type", "text/html")
self.end_headers()
self.wfile.write(src)
self.wfile.close()
def done(self):
self.dp=self.basepath()
self.router=self.getrestlet()
class Test(Restful): #測試1
def test(self): #這就是一個資源
新聞熱點
疑難解答