我得到错误时,试图使后呼叫/api/subject/search
我想这是一个简单的语法错误,我错过了
我的api路由定义在
下面Route::group(array('prefix' => 'api'), function()
{
Route::post('resource/search', 'ResourceController');
Route::resource('resource', 'ResourceController');
Route::post('subject/search', 'SubjectController');
Route::resource('subject', 'SubjectController');
Route::resource('user', 'UserController');
Route::controller('/session', 'SessionController');
Route::post('/login', array('as' => 'session', 'uses' => 'SessionController@Store'));
});
我的控制器大部分是空的
class SubjectController extends 'BaseController
{
public function search()
{
$subjects = [];
if((int)Input::get('grade_id') < 13 && (int)Input::get('grade_id') > 8)
$subjects = Subject::where('name', 'like', '%HS%')->get();
else
$subjects = Subject::where('name', 'not like', '%HS%')->get();
return Response::json([
'success' => true,
'subjects' => $subjects->toArray()
]);
}
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @return Response
*/
public function store()
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param int $id
* @return Response
*/
public function update($id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return Response
*/
public function destroy($id)
{
//
}
}
您需要指定方法。
试
Route::post('subject/search', 'SubjectController@search');
参见命名路由示例:Laravel文档
在您的情况下,我认为搜索不是由控制器解决以加载search()
方法。您还发送了一个用于搜索功能的POST,我想最好是做一个GET请求,因为POST和PUT是用于存储数据的。
约定/strong>
在创建API时,坚持命名约定和模式是一件好事。
- http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api
解决方案/strong>
你的路线可以像这样简单:api.yourdomain.com/api/subject?search=term1,term2
。使用GET查询执行此操作将使其转到index()
方法。在那里你可以检查GET
参数,做你的搜索的东西,并返回。
在Laravel中使用最干净和真正RESTful的方式来创建API:
- 如何在Laravel中创建一个RESTful API以在我的BackboneJS应用程序中使用
我在访问viewblade php文件中空数组索引处的对象时遇到了相同的错误。