Laravel 5.4 - 形式/ API /视图
我创建的保存在数据库上的数据,并返回201,如果成功或404如果不是的API(商店)。Laravel 5.4 - 形式/ API /视图
if ($visit->save()){
$visit->view_visit = [
'href' => 'api/v1/visit/' . $visit->id,
'method' => 'GET'
];
$response = [
'msg' => 'Visit created.',
'visit' => $visit
];
return response()->json($response, 201);
}
$response = [
'msg' => 'Error during creation.'
];
return response()->json($response, 404);
它完美地工作。使用邮递员,您可以看到状态将为< < 201创建>>。
此API应该有两种使用方式:由另一个应用程序调用或通过Laravel形式调用。这是一个问题:
我如何把它的方式,如果它成功了,它会加载在浏览器中给定的看法? 换句话说,有没有一种方法,使窗体调用路由(API本身,像../api/visit/),并在成功的情况下加载其他看法?另外,我想将响应['msg']的内容传递给这个新视图。
我知道我可以在商店方法中通过过滤HTTP引用来完成,但我想严格控制器代码来管理记录创建。除此之外,我必须发送201/404代码以及返回的数据。
我也算是创造另一个控制器来处理API响应,然后调用的形式,但它仍然听起来太 - 它应该是很容易的,我猜。
在laravel你可以用它确定一个有用的方法,如果已经发送的请求是一个Ajax请求,或者只是一个正常的要求,这就是:
$request->wantsJson()
所以,里面的控制器中返回功能,你会做一个if语句:
if ($request->wantsJson()) {
return response()->json();
}else{
return view(...);
}
非常感谢@Sletheren!工作完美 - (我知道它应该有一个优雅的解决方案!)。 我刚添加的下面头JSON响应和Laravel做它的魔力 '$ visit->头= [ '接受'=> '应用/ JSON', 'CONTENT_TYPE'=> '应用/ JSON' ];' –
很高兴我可以帮助男人:) – Sletheren
BTW,正确的代码显示 '方法 '=>' POST' 代替 '方法=>“GET' –
检查答案出来 – Sletheren
有一个看https://laravel.com/docs/5.4/redirects#redirecting-with-flashed-session-data –