【问题标题】:PHP Laravel RESTful api for android questions用于Android问题的PHP Laravel RESTful api
【发布时间】:2016-07-26 06:08:38
【问题描述】:

我是 Laravel 的新手,不太清楚如何将我的 PHP 代码移动到 Laravel

目前,我有一个 android 应用程序,它通过 url www.example.com/test.php 与 android volley 服务器进行通信

android volley 向.php 文件发送一些POST 参数(例如:userIDRestaurantId 等)

在文件中,它使用 PDO 从表中创建正确的 .json 结构,并使用准备好的语句连接到数据库

然后它返回一个.jsonjson_encode()

如何将此代码移至 laravel?

我真的需要一个授权/登录页面吗?

【问题讨论】:

  • laravel 是框架,所以有不同的格式。所以首先你需要了解 laravel 的结构和语法。
  • Laravel 不像“一堆文件”的 PHP 应用程序那样工作。一切都通过the router layer 将事情导向controllers,这在大多数MVC 风格的框架中都是典型的。如果您正在构建 API,您可能不需要通过用户名/密码进行授权,但如果有任何受保护的内容,您将需要 API 密钥,这通常是通过注册和生成密钥来创建的。
  • 你应该看一下关于如何使用 laravel 创建 api 的基本示例,但简化后你需要做的就是在 app/http/routes.php 中定义应该访问的路由和直接提供控制器或函数。您需要处理 Web 中间件,因为您可能不希望将其用于 api。

标签: php android mysql laravel laravel-5


【解决方案1】:

你将不得不做很多事情来实现这一点。你可能无法转换你的代码,因为 laravel 将使用 eloquent 完成所有的数据库通信。路由也是一个与普通 php 完全不同的概念。

我仍然强烈建议您使用 laravel,因为您会遇到更少的安全问题。

这里列出了您需要查看的主题和步骤列表,以实现您所描述的内容。

  • 假设您使用最新版本的全新 laravel 设置,您将不得不查看您可能不需要 api 的 web 中间件。它可以在 RouteServiceProvider 中找到,它被定义为在您的 routes.php 文件中的每条路由上使用。如果你有旧版本的 Laravel 5.2,它可能在 routes.php 本身中定义为组。删除 web 中间件,如果需要,可能添加 api 中间件
  • 在您的 routes.php 文件中创建路由以定义用于响应请求的“url”
  • 创建控制器来处理这些传入的请求。如果您没有很多代码,您可以直接在 routes.php 中将它们作为匿名函数处理
  • 模型基本上就是您的表格。您应该为每个表定义一个模型。默认情况下已经定义了用户模型。看看它的代码。您还将定义模型之间的关系。这将使链接模型上的 CURD 运算符非常容易。
  • 迁移是表的定义。它由“运行迁移时应该做什么”(向上功能)和“在回滚的情况下应该做什么”(向下功能)组成
  • 如果你在 laravel 中返​​回类/数组,它会自动解析为 json

查看您的示例,我假设您将拥有一个用户模型和一个餐厅模型,例如,如果您有一个投票系统,其中用户对餐厅进行投票/评分,您将在用户和餐厅之间建立多对多关系.

如果一家餐厅属于某个用户,那么它将是 oneToMany,因为一个用户可以拥有多家餐厅。

定义关系看起来像这样(User.php 模型)

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

Restaurant.php 看起来像这样

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

通过此设置,确保您的 Restaurant 表具有用户表的“user_id”外键字段。

查询一个用户的所有餐厅现在看起来像这样

return $user->restaurants;

但这些只是一些高级示例,应该向您解释 laravel 的工作原理以及为什么您可以从中受益。它减少了您的样板代码,并为您提供了一组可靠的函数、帮助程序和概念,可帮助您轻松增强您的应用程序 - 一旦设置完成。

您可以查看文档以获取更多详细信息https://laravel.com/docs/5.2 并在http://laracasts.com找到很棒的教程

【讨论】:

  • 如果我确实有一个需要身份验证的管理后端,以及来自 android 的不需要任何身份验证的请求,我如何设置中间件来支持两者?
  • Android 请求从服务器返回的大部分 JSON 数据不是敏感或关键信息(电子邮件/密码),我需要为此添加身份验证吗?
  • 有一个身份验证中间件。例如,您可以使用基本身份验证查找“增量 API”的教程。您可以在您的 routes.php 中使用此中间件定义一个组,然后您只需将所有路由放入应受保护的该组中。所有其他路由都可以放在该组之外并且不受保护。您还可以创建两个不同的控制器来实现这一点。
猜你喜欢
  • 1970-01-01
  • 2020-09-02
  • 1970-01-01
  • 1970-01-01
  • 2018-08-22
  • 2016-01-19
  • 2015-02-23
  • 2017-11-15
  • 2021-11-17
相关资源
最近更新 更多