2016-07-26 39 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中使用这个中间件来定义一个组,然后你简单地把所有的路由放到这个应该被保护的组中。所有其他路线可以放在这个小组之外,并且不受保护。 你也可以创建两个不同的控制器来实现这一点。 –