2013-11-03 66 views
0

我想爲RESTful API服務創建一個Python API包裝器,並且我正在考慮如何設計它。API客戶端設計,我應該檢查參數嗎?

示例URL請求:這裏

https://www.api.com/collection/resource.json?userid=id&password=pass&command=value 

我要盡一切收集模塊和資源,這些模塊的功能,例如是我要如何使用API​​:

from apiname import collection 

# params is a dict of the parameters sent to this resource 
params = { 
    'userid': '123456', 
    'password': 'pass', 
    'command': 'value' 
} 

collection.resource(params) 

我的主要問題是關於params字典傳遞到資源,我應該檢查通過了該資源的參數:

    如果
  • 檢查所需的參數傳遞(也許拋出一個異常,如果不通過)
  • 檢查它們的類型(STR,列表,INT,BOOL)

,或者我應該保持它的簡單,使函數發送任何傳遞給資源的東西?

如果我要檢查參數,什麼是推薦的方式做到這一點,我想保持所有存儲每個資源的默認參數,然後我檢查所有傳遞的參數與此默認字典,例如:

# this is the dict holding the info about all the parameters 
defaults = {} 

defaults['userid'] = {'type': str, 'required': True, 'default': None} 
defaults['password'] = {'type': str, 'required': True, 'default': None} 
defaults['command'] = {'type': list, 'required': False, 'default': 'some-value'} 

那麼應該遵循什麼路徑?

+0

它會增強客戶端開發人員的經驗嗎?通過提供錯誤檢查讓客戶更容易開發使用您的API? – dm03514

+0

@ dm03514是的,但任何建議或例子都歡迎。 – Pierre

回答

1

如果您檢查客戶端的參數,您將在當前的客戶端和服務器實現之間創建一個強大的耦合。如果服務器更改了某些資源接受的任何參數或值,則可能會中斷客戶端並要求更改。這在REST中是非常不可取的。即使這個API真的是RESTful,你的客戶也不會,而且你也不會利用這個架構的好處。

您不應該檢查客戶端的參數。而不是那個,你應該認真對待服務器返回的錯誤。理想情況下,他們應詳細說明一個或多個參數是否不足或缺失。

相關問題