如何使用 Laravel 5.3 创建 REST 完整 Web 服务的 Api
Posted
技术标签:
【中文标题】如何使用 Laravel 5.3 创建 REST 完整 Web 服务的 Api【英文标题】:How to create Api of REST full web Services using Laravel 5.3 【发布时间】:2017-04-18 07:44:48 【问题描述】:我已经在 this tutorial 之后在 XAMPP 中使用 laravel 5.3 创建了 CRUD 应用程序,现在我必须创建这个 CRUD 应用程序的 RESTful API,以便能够从 android 应用程序执行 CRUD 操作。 任何帮助的人提前谢谢
【问题讨论】:
【参考方案1】:API 调用和普通 html 应用的区别主要在于响应,通常你的控制器响应 view(),所以它们可以被渲染:
/// Get the data
$books=Book::all();
/// HTML response
return view('books.index',compact('books'));
API 通常使用 JSON 响应,这在 Laravel 中就像做一样简单
/// Get the data
$books=Book::all();
/// JSON response
return response()->json($books);
或者简单到
return Book::all();
或
return Book::all()->toJson();
在你的应用架构中你必须考虑的另一件事是路由,为了区分 web 和 api,我通常将端点创建为
/api/books/1
代替
/books/1
这是在你的路线中完成的
Route::get('/api/books/id', 'BookController@show');
您也应该阅读一些有关 API 创建的内容,因为 API 架构很难,端点变得非常快速和容易,这是一本关于 API 的好书https://leanpub.com/build-apis-you-wont-hate
【讨论】:
感谢您的回复@Antonio,您的回答非常有帮助,现在我在浏览器的 url 中输入了 json 响应类型( localhost:8000/api/books/1 )。但使用 POST (localhost:8000/api/books/1) 在邮递员中没有得到响应。它显示 ** 405 method not allowed **405 method not allowed photos.google.com/album/…" height ="100"> 当我使用 GET 它说 **ok (200) ** 但不显示 json web.php(路由文件)Route::get('/', function () return view('welcome'); );
Auth::routes();
Route::get('/home', 'HomeController@index'); Route::resource('books','BookController');
Route::get('/api/books/id', 'BookController@show');
Auth::routes();
Route::get('/home', 'HomeController@index');
图书控制器public function show($id) $books=Book::all(); return response()->json($books);
删除 auth::routes() 和中间件现在我使用 get 方法获得 Json 响应,但如何使用其他方法有什么 routs 请帮助
运行php artisan route:list
,你应该会看到你所有的路线以上是关于如何使用 Laravel 5.3 创建 REST 完整 Web 服务的 Api的主要内容,如果未能解决你的问题,请参考以下文章