尝试对/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)
{
//
}
}
答案 0 :(得分:8)
答案 1 :(得分:0)
在您的情况下,我认为控制器无法解析搜索以加载search()
方法。你也发送了一个搜索功能的POST,我想最好做一个GET请求,因为POST和PUT用于存储数据。
<强>会展强>
在创建API时,坚持使用命名约定和模式是件好事。
<强>解决方案强>
您的路线可能更简单:api.yourdomain.com/api/subject?search=term1,term2
。使用GET查询执行此操作会使其转到index()
方法。在那里,您可以查看GET
参数并进行搜索并返回。
检查这是否是在Laravel中制作API的最简洁,最真实的REST方式:
答案 2 :(得分:0)
在视图刀片php文件中访问空数组的索引处的对象时,我遇到了同样的错误。