2010-01-02 61 views
0

我正在PHP中構建一個REST API,我需要知道是否可以將POST數組方法/函數和參數傳遞給我的api腳本,並讓我的代碼運行列出的函數並將數組打印到屏幕上所產生的函數,例如,如果用戶發送請求以獲取5張照片url的列表,則會將包含5個URL的PHP​​數組發佈到數組中,然後能夠在使用API​​的persons腳本中使用該數組?PHP API腳本可以運行從REST服務器返回的PHP代碼嗎?

所以基本上你用CURL發佈一個腳本列表,你希望API運行的函數數組,api返回一個結果數組,但不是格式化爲JSON或XML,而是將它顯示在屏幕上作爲PHP數組然後curl會讓用戶的代碼作爲真正的PHP在那裏腳本運行返回的PHP數組?

對不起,如果這是令人困惑,但它似乎確實bebo.com API的工作原理和可能的Facebook API,所以我認爲這會工作,但有人可以告訴我嗎?可能的一些例子如何做到這一點,如果有可能,謝謝

+4

這對我來說似乎是一個非常糟糕的主意。永遠不要從不受信任的來源執行代碼。我沒有看到爲什麼JSON或只是序列化/反序列化不會是更好的解決方案的原因。 http://php.net/manual/en/function.serialize.php – 2010-01-02 05:13:59

+1

沒有人在他們的正確思想將永遠盲目評估從外部來源收到的PHP代碼,所以你會浪費你的時間嘗試。 – 2010-01-02 05:14:30

+1

這將工作正常。請將URL發送到您的Web服務,以便我可以測試它(嘿嘿)。開玩笑。 – gahooa 2010-01-02 05:24:05

回答

1

我發現JSON-RPC是一個夢幻般的API批處理請求解決方案。將多個API請求放在單個JSON-RPC請求中比我見過的任何XML解決方案(雖然只有版本1.1和更高的規範支持這個要求)要簡單得多。因爲它全部只是JSON,所以無論服務器端(或客戶端)語言使用結果如何,它都可以很好地工作。我發現的唯一問題是如果你想實現所有潛在的版本,規範有點不可思議。

爲了安全,你應該:

  • 嚴格限制其PHP函數/方法允許匿名用戶無需認證打電話。使用PHP Reflection API對參數進行初始驗證。您可以使用反射來執行以下操作:
    • 確保存在方法並且是公共的(如果沒有,則返回HTTP 404,如果未授權,則返回403)。
    • 計算函數或方法接受的參數數量。
    • 確定參數是可選的或必需的。
    • 確定參數的名稱,以便它們可以作爲JSON對象傳遞。
    • 如果您使用PHP 5.1+,則可以檢查文檔註釋以確定每種參數的接受數據類型。
  • 嚴格驗證每個API調用內部的參數。
+0

我認爲我的文章可能被其他人誤解了一些,但我想不使用JSON,因爲我認爲這是一個僅限於JavaScript的東西,我忘記了可以將它用於php和其他東西,聽起來像一個好主意,謝謝你的提示 – JasonDavis 2010-01-02 06:08:59

+0

我聽到你在說什麼。太多人批評,因爲你有正確的想法,但錯誤的實施。我想這就是爲什麼你首先提出這個問題。乾杯! – Mike 2010-01-02 06:26:13

+0

「使用PHP Reflection API對參數進行初始驗證。」我看着那個鏈接,你能更清楚地解釋一下它的作用嗎? – JasonDavis 2010-01-02 06:56:44

0

我曾經與Lumen一起爲REST工作,但事實證明它對我的目標來說仍然過於臃腫,所以我剛剛解決了我與任何人共享的解決方案。 https://github.com/joaoN1x/koolrest

+0

歡迎來到Stackoverflow!雖然這可能在理論上回答這個問題,但最好在此包含答案的基本部分(http://meta.stackoverflow.com/q/8259),並提供供參考的鏈接 – 2017-01-23 01:23:20

相關問題