2016-07-26 38 views
2

我是新來Laravel並不太清楚如何將我的PHP代碼LaravelAndroid的問題PHP Laravel的RESTful API

目前,我有一個Android應用程序與Android的凌空throught一個url www.example.com/test.php服務器通信

機器人凌空發出一些POST參數(例如:userIDRestaurantId等)到.php文件

在它從創建正確.json結構的文件使用PDO預處理語句表(S)連接到數據庫

然後返回.jsonjson_encode()

如何移動此代碼laravel?

我真的需要授權/登錄頁面嗎?

+0

的laravel是框架找到真棒教程,所以有一個不同的甲酸鹽。所以首先你需要了解laravel的結構和語法。 –

+0

Laravel不像「一堆文件」PHP應用程序那樣工作。一切都通過[路由器層](https://laravel.com/docs/5.2/routing),將內容導向到[controllers](https://laravel.com/docs/5.2/controllers) MVC風格的框架。如果您正在構建API,則可能不需要通過用戶名/密碼進行授權,但如果有任何受保護的東西,您通常需要註冊並生成密鑰才能創建API密鑰。 – tadman

+0

你應該看看如何用laravel創建api的基本示例,但簡化所有你需要做的就是定義app/http/routes.php中的路由,它應該被訪問,並且提供一個控制器或者一個函數直。你將需要照顧網絡中間件,因爲你可能不希望這個API。 –

回答

0

你將不得不做一堆東西來實現這一點。你可能無法轉換你的代碼,因爲laravel會使用雄辯來做所有的數據庫通訊。路由也是一種完全不同於普通的php的概念。

我仍然強烈建議使用laravel,因爲您的安全問題較少。

下面列出了您需要查看的主題和步驟,以實現您所描述的內容。

  • 假設你有一個新的laravel設置與最新版本,你將不得不看看你可能不需要一個API的網絡中間件。它可以在RouteServiceProvider中找到,它在route.php文件中的每個路由上都被定義爲使用它。如果你有一個老版本的Laravel 5.2,它可能被定義爲routes.php本身的組。刪除網絡中間件,如果需要可添加API中間件
  • 在您的routes.php文件中創建路由以定義使用哪個「url」來響應請求
  • 創建控制器以處理這些傳入請求。如果你沒有很多代碼,你可以直接在routes.php中作爲匿名函數來處理它們。
  • 模型基本上就是你的表格。您應該爲每個表定義一個模型。用戶模型默認已經定義。看看它的代碼。您還將定義模型之間的關係。這將使鏈接模型上的CURD操作員非常容易。
  • 遷移是您的表的定義。它由「遷移運行時應該做什麼」(up函數)和「回滾時應該做什麼」(down函數)組成
  • 如果您返回laravel中的類/數組,它將自動被解析到json

看着你的例子,我假設你將有一個用戶模型和餐廳模型,例如,如果你有一個投票系統,其中用戶投票/評價餐廳,你會有多對多的關係在用戶和餐館之間。

如果一家餐館屬於用戶,它將會是oneToMany,因爲用戶可以有多家餐館。

定義關係看起來是這樣的(user.php的模型)

public function restaurants() { 
    return $this->hasMany('App\Restaurants'); 
} 

的Restaurant.php是這樣

public function user() { 
    return $this->belongsTo('App\User'); 
} 

採用這種設置確保您的餐廳表中有一個 「user_ID的」 洋關鍵字段發送到用戶表。

查詢用戶的所有餐館現在這個樣子

return $user->restaurants; 

但這些都只是一些高水平的例子應該向你解釋如何laravel作品,爲什麼你可以從中受益。它減少了您的樣板代碼,併爲您提供了一整套功能,幫助程序和概念,幫助您輕鬆地增強應用程序 - 一旦設置完成。

你可以看看到文檔的更多細節https://laravel.com/docs/5.2 而在http://laracasts.com

+0

如果我確實有一個需要認證的管理員後臺,並且還需要來自android的不需要任何認證的請求,那麼我如何設置中間件以支持兩者? – yeh

+0

從android請求返回的大部分JSON數據都不是敏感或重要信息(電子郵件/密碼),我是否需要爲此添加身份驗證? – yeh

+0

有一個認證中間件。例如,您可以使用基本身份驗證查找「增量API」教程。 你可以在你的routes.php中使用這個中間件來定義一個組,然後你簡單地把所有的路由放到這個應該被保護的組中。所有其他路線可以放在這個小組之外,並且不受保護。 你也可以創建兩個不同的控制器來實現這一點。 –