2016-07-04 89 views
1

我嘗試爲我的web2py應用程序構建一個API。Restful API with authentication

# -*- coding: utf-8 -*- 
auth.settings.allow_basic_login = True 

@auth.requires_login() 
@request.restful() 
def api(): 
    response.view = 'generic.json' 

    def GET(tablename, id): 
     if not tablename == 'division': 
      raise HTTP(400) 


     result = db(db.division.title == id).select() 

     return dict(result = result) 

return locals() 

但每次我試着通過捲曲連接我得到這樣的回答:

You are being redirected <a href=\"/my_manager/login?_next=/my_manager/api/get_all_divisions/1.json\">here</a> 

當我註釋掉該行

@auth.requires_login() 

everythink工作正常。

我已經搜索了提示,但到目前爲止還沒有發現任何有關此主題的有用信息。

任何幫助真的很感激。

+0

你的捲曲電話是什麼樣的?你確定你傳遞了有效的登錄憑據嗎? – Anthony

+0

@sarah我面臨類似的問題,仍然在等待解決方案。我發佈了一個關於這個問題的問題,你可以從評論或我的代碼中獲得一些幫助。 http://stackoverflow.com/questions/33938076/how-to-make-api-call-that-requires-login-in-web2py –

+0

@Anthony我嘗試從web2py書的例子,我敢肯定,登錄數據是正確的。我的登錄電子郵箱地址和密碼 –

回答

0

我知道它的一個很老的問題,但還是這個答案會幫助誰可能會遇到同樣的問題,其他人:

那麼在您使用@auth.requires_login()這需要用戶的情況下,在登錄

所以您需要在調用此API時發送基本的身份驗證憑據。

一個簡單的捲曲呼叫可以是:

curl --user [email protected]:abc123 http://localhost:8000/app_name/default/api/table_name.json 

這裏:

  • [email protected]是用戶名
  • ABC123是密碼
  • APP_NAME是web2py的的應用程序名稱
  • table_name是db中的表名