首页 文章

Laravel 5 api路线

提问于
浏览
2

Brief:

实际上,使用Laravel api路由文件时我有点困惑 .

Question:

如果我需要访问使用laravel创建的其他平台( like android app )中我的网站的数据,那么我应该在 api.php 文件中创建不同的路由吗?

如果是,那么我将为每个请求声明两个路由和控制器,首先在 web.php 中,第二个在 api.php 中 . 这是对的吗?

基本上,我想问一下如何制作API,以便我可以访问网站以及其他平台的数据?

我正在寻找一个很好的教程,但我没有一个好的教程 .

3 回答

  • 1

    理想情况下,API路由和Web路由应该完全不同,但如果您希望它相同,那么您可以仅在 web.php 中添加路由,而不是在不同的文件中定义路由,并在客户端和控制器中添加特殊参数参数然后返回JSON对象或者返回视图 .

    例如 .

    web.php

    Route::get('getUsers','UserController@getUsers');
    

    UserController.php

    ...
    public function getUsers(Request $request)
    {
        ...
    
        if ($request->has('api')) {
            return $users; //API Route (Laravel will by Default return the JSON Response no need to do json_encode)
        }
    
        return view('pages.user_list'); //Normal Routes hence returning View
    }
    ...
    

    请求正常请求

    <Yourdomain>/getUsers
    

    API请求

    <Yourdomain>/getUsers?api=true
    

    我希望有帮助......

  • 0

    api.php 中编写api路由,在 web.php 中写入Web路由 .

    Api路由在路由中始终具有名称 api ,因此您可以区分路由 . 我在这里提到,因为@Akshay Khale提到了查询参数的示例 .

    如果你想为API和Web使用相同的控制器,Api请求总是在你的控制器中有Header Content-Type : Json"Accept":"application/json" ,你可以这样做 .

    public function getUsers(Request $request)
    {
        ...
    
        if ($request->wantsJson()) {
            return response()->json($users, 200); //here why we are extending response object because using json() method you can send the status code with the response. 
    
        }
    
        return view('pages.user_list'); //Normal Routes hence returning View
    }
    
  • 1

    对于laravel 5.6及以上,上述答案对我不起作用,所以这是我的2美分 .

    我已将路线放在 web.phpapi.php 中,并且没有任何魔术技巧 .

    public function getUsers(Request $request)
    {
        ....
    
        if( $request->is('api/*')){
            ...
            return response()->json($user_data, 200);
        }
        ...
        return view('users', ['users_data'=>$user_data]);
    }
    

    它将返回json输出

    127.0.0.1:8000/api/users

    和html中的普通视图

    127.0.0.1:8000/users

相关问题