如何使用 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的主要内容,如果未能解决你的问题,请参考以下文章

如何在 laravel 5.3 中使用 ajax

在 Laravel 5.3 中使用相同的表单进行创建和编辑

无法在 laravel 5.3 的 mac 上创建缓存目录

我将如何覆盖 Laravel 5.3 sql 语法

如何在 laravel 中使用社交名流和护照创建 REST API

如何在 Laravel 5.3 中添加自定义通知通道