在laravel中创建API


Making an API in 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 controller")

routes::get(login,"login_controller_which_will_send_ajax_requests_to the_above_controller")

我想问这样的建议。如果没有,有什么更好的方法来实现这个

你可以用这样的前缀创建一个新的路由组:

Route::group(['prefix' => 'api/v1'],function(){
Route::resource('name', 'Controller'); //resource controller
});
控制器中的

初始化构造函数:

public function __construct()
{
    $this->middleware('auth.basic');
}

使用这个,用户只有在发送用户名并作为参数传递之后才能访问这里的所有方法(index, store…)。

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

同样,在开始使用某个API的项目之前,使用POSTMAN测试所有内容(所有get, post, put方法),并验证身份验证是否有效,或者未登录的用户是否可以使用您的API获取/发布数据。如果有问题请写在这里

假设您提到的多个平台可以分为网站和移动应用。

建议将它们分开构建:像传统那样构建网站,而另一个api仅用于移动应用程序。

原因很简单:对于网站,您可以使用会话来存储用户登录状态,但对于移动应用程序,您需要使用json web token之类的东西来验证用户。如果它们共享路由和操作,这将是混乱和难以维护的。

当然也有例外。如果你使用AngularJS这样的JS框架来构建一个web应用程序,你可以只构建api并为它们提供服务。