Php 在laravel中制作API

Php 在laravel中制作API,php,json,ajax,api,laravel,Php,Json,Ajax,Api,Laravel,我是一个拉威尔初学者。我正在使用laravel构建一个PHP后端,它将服务于多个平台。我想制作一个多平台可以使用的api。这就是我想做的: 我的api可以这样访问:URL.com/api/v1/login这用JSON响应 而且,如果是web版本,则可以从URL.com/login访问登录。这将显示一个表单,该表单将向发送AJAX请求 URL.com/api/v1/login 我正在考虑为此设置不同的路线。比如: routes::post(api/v1/login,"whatever contr

我是一个拉威尔初学者。我正在使用laravel构建一个PHP后端,它将服务于多个平台。我想制作一个多平台可以使用的api。这就是我想做的:

我的api可以这样访问:URL.com/api/v1/login这用JSON响应

而且,如果是web版本,则可以从URL.com/login访问登录。这将显示一个表单,该表单将向发送AJAX请求

URL.com/api/v1/login
我正在考虑为此设置不同的路线。比如:

routes::post(api/v1/login,"whatever controller")


我想问一下这样的建议。如果没有,那么实现这一点的更好方法是什么呢?假设您提到的多个平台可以组合为网站和移动应用程序

建议将它们分开构建:像传统方式一样构建网站,并为移动应用程序创建另一个api

原因很简单:对于网站,您可以使用会话来存储用户登录状态,但是对于移动应用,您需要使用类似json web令牌的东西来验证用户。如果他们分享路线和行动,这将是混乱和难以维持的


当然也有例外。如果您使用一些JS框架(如AngularJS)将网站构建为web应用程序,您可以构建api并提供所有服务。

您可以使用如下前缀创建一个新路由组:

Route::group(['prefix' => 'api/v1'],function(){

Route::resource('name', 'Controller'); //resource controller
});
在控制器中,初始化构造函数:

public function __construct()
{
    $this->middleware('auth.basic');
}
使用这一个,用户将能够访问所有的方法从这里索引,存储。。。只有在他们发送用户名并作为参数传递之后

如果您的意思是需要移动设备的正确登录屏幕,请在控制器中创建一个新的post方法,从中获取用户名和密码的哈希值,如果用户名和密码与数据库中的用户名和密码匹配,则返回200 HTTP响应,否则返回403禁止。这里不需要AJAX请求


此外,在启动使用特定API的项目之前,请使用POSTMAN所有get、post、put方法测试所有内容,并验证身份验证是否有效,或者未登录的用户是否可以使用您的API获取/发布数据。如果您有问题,请将问题写在此处

不确定登录控制器将向控制器上方的控制器发送ajax请求,因为控制器永远不会发送ajax请求。这是由控制器呈现的视图中的javascript完成的。对不起。我是说。将调用执行ajax请求的视图的登录控制器,您所说的多平台是什么意思?你能说出他们的名字吗?现在是Android和ios。我很好奇你为什么会问。因为windows和mac是两个平台,但都可以使用浏览器或它们自己的本地应用程序。假设api本身在mobile和sessionfor web的情况下处理令牌,这会起作用吗?我问这项技术对于LaaLeVE是否是理想的,那么您还需要考虑Web所使用的CSRF令牌,以及API的内容协商等,这使得控制器动作非常繁重,难以抽象。此外,检查每个请求的移动令牌和web会话会降低速度。因此,该技术是可行的,但可能不适合更大的应用。假设我有两个不同的URL,它们将处理不同的平台。URL.com/api/login。和URL.com/api/mobile/login。所有与移动相关的路由都将路由到另一个控制器,但要短接。如果你的应用程序很小,请使用一个url;如果大的话,用两个。因此,两者都将起作用。
public function __construct()
{
    $this->middleware('auth.basic');
}