version('v1', [ 'namespace' => 'App\Http\Controllers\Api', 'middleware' => ['serializer:array', 'bindings'],//注意里的bindings中间件,使用这个才能使用隐式路由绑定 ], function ($api) { $api->group([ 'middleware' => 'api.throttle', 'limit' => config('api.rate_limits.sign.limit'), 'expires' => config('api.rate_limits.sign.expires'), ], function ($api) { // 短信验证码 $api->post('verificationCodes', 'VerificationCodesController@store') ->name('api.verificationCodes.store'); // 用户注册 $api->post('users', 'UsersController@store') ->name('api.users.store'); // 图片验证码 $api->post('captchas', 'CaptchasController@store') ->name('api.captchas.store'); // 第三方登录 $api->post('socials/{social_type}/authorizations', 'AuthorizationsController@socialStore') ->name('api.socials.authorizations.store'); // 登录 $api->post('authorizations', 'AuthorizationsController@store') ->name('api.authorizations.store'); // 刷新token $api->put('authorizations/current', 'AuthorizationsController@update') ->name('api.authorizations.update'); // 删除token $api->delete('authorizations/current', 'AuthorizationsController@destroy') ->name('api.authorizations.destroy'); // 游客可以访问的接口 $api->get('categories', 'CategoriesController@index') ->name('api.categories.index'); //话题列表 $api->get('topics', 'TopicsController@index')->name('api.topics.index'); //某用户的话题列表 $api->get('users/{user}/topics', 'TopicsController@userIndex')->name('api.users.topics.index'); }); // 需要 token 验证的接口 $api->group(['middleware' => 'api.auth',], function ($api) { // 当前登录用户信息 $api->get('user', 'UsersController@me') ->name('api.user.show'); // 图片资源 $api->post('images', 'ImagesController@store') ->name('api.images.store'); // 编辑登录用户信息 $api->patch('user', 'UsersController@update') ->name('api.user.update'); //发布话题 $api->post('topics', 'TopicsController@store')->name('api.topics.store'); //发布话题 $api->patch('topics/{topic}', 'TopicsController@update')->name('api.topics.update'); //删除话题 $api->delete('topics/{topic}', 'TopicsController@destroy')->name('api.topics.destroy'); }); }); /*$api->version('v2', function ($api) { $api->get('version', function () { return response('this is version v2'); }); });*/