Laravel rest path
Laravel rest path
我有一个route.php文件:
Route::group(array('prefix' => 'api'), function () { Route::resource( 'login', 'TokenController', ['only' => ['index', 'create', 'store', 'destroy']] ); });
这是php artisan routes
的输出:
+--------+---------------------------+-------------------+-------------------------+----------------+---------------+ | Domain | URI | Name | Action | Before Filters | After Filters | +--------+---------------------------+-------------------+-------------------------+----------------+---------------+ | | GET|HEAD / | | Closure | | | | | GET|HEAD api/login | api.login.index | TokenController@index | | | | | GET|HEAD api/login/create | api.login.create | TokenController@create | | | | | POST api/login | api.login.store | TokenController@store | | | | | DELETE api/login/{login} | api.login.destroy | TokenController@destroy | | | +--------+---------------------------+-------------------+-------------------------+----------------+---------------+
我需要放入哪个路径才能获得TokenController的响应?
我尝试过这个:
`http://localhost/bets/api/login/create?email=vlio20%40gmail.com&password=vlad1q`
结果是Error 404
。
我还尝试了这个:
http://localhost/bets/api/login/create?email=vlio20%40gmail.com&password=vlad1q
显示一个空白页面(响应代码是我的index.php,一个空的html页面)。
注意1
我使用xampp作为我的Web服务器,bets是包含文件夹。
注意2
我已经配置view.php在public文件夹中查找视图:
'paths' => array(__DIR__.'/../../public')
注意3
使用curl:
curl -i -H "Accept: application/json" -H "Content-Type: applicatio n/json" -X GET http://localhost/bets/public/index.php/api/login/create?email=vli o20@gmail.com&password=vlad1q
返回结果如下:
HTTP/1.1 200 OK Date: Fri, 06 Jun 2014 08:56:58 GMT Server: Apache/2.4.7 (Win32) OpenSSL/0.9.8y PHP/5.4.22 X-Powered-By: PHP/5.4.22 Content-Length: 723 Content-Type: text/htmlBets Application 'password' is not recognized as an internal or external command, operable program or batch file.
Laravel rest path问题的出现原因和解决方法
在Laravel中,当我们使用不同的请求方法和路径访问API时,会导致不同的方法被调用。下面是具体的请求方法和路径以及对应的方法调用:
1. 使用GET请求方法访问"http://localhost/bets/api/login"路径,会调用index方法。
2. 使用GET请求方法访问"http://localhost/bets/api/login/create"路径,会调用create方法。
3. 使用POST请求方法访问"http://localhost/bets/api/login"路径,会调用store方法。这个请求通常是通过一个包含"action='http://localhost/bets/api/login'"属性的表单来发送的。
4. 使用POST请求方法访问"http://localhost/bets/api/login/id"路径,会调用delete方法。其中的"id"可以是任意的数字,例如1或20。这个请求也是通过一个包含"action='http://localhost/bets/api/login/1'"属性的表单来发送的。需要注意的是,为了触发DELETE方法,还需要在表单中添加一个隐藏的输入字段,例如:
为了生成这样的表单,我们可以使用类似以下的代码:
Form::open(array('route' => array('api.login.destroy', 1), 'method' => 'delete'))
注意其中的"1"应该是要删除的模型的id,你可以通过在控制器中将模型传递给视图,然后在视图中生成这个表单。更多详细信息可以查阅Laravel的文档。
根据问题描述,当尝试通过浏览器或者curl访问"http://localhost/bets/api/login/create"时,会收到404页面不存在的错误。
解决这个问题的方法是确保路径和请求方法的匹配正确。在这个例子中,可能是因为路径中缺少了一部分,导致Laravel无法找到对应的路由。为了解决这个问题,可以尝试在路径中添加缺失的部分,或者检查路由配置是否正确。
Laravel rest path问题的出现原因是将主要的php文件(app.php)放在了app/view目录下,而将所有的js、css等文件放在了public目录下。同时,将laravel的视图路径更改为默认路径(app/views),将app/route.php文件更改为如下内容:
'api'), function() { Route::resource('login', 'TokenController', array('only' => array('index', 'create', 'store', 'destroy'))); }); App::missing(function($exception) { return View::make('index'); });
解决该问题的方法是重新开始,并将主要的php文件(app.php)放回默认的目录(app目录下),将所有的js、css等文件放回默认的public目录。同时,将laravel的视图路径更改为默认路径(app/views),将app/route.php文件更改为以下内容:
'api'), function() { Route::resource('login', 'TokenController', array('only' => array('index', 'create', 'store', 'destroy'))); }); App::missing(function($exception) { return View::make('index'); });
希望这能帮到你!