[英]Laravel 5.4 - form/API/view
我创建了一个API( store ),将数据保存在数据库中,如果成功则返回201,否则返回404。
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/之类的东西),并在成功的情况下加载另一个视图? 另外,我想将response ['msg']的内容传递给这个新视图。
我知道我可以通过过滤HTTP引荐来源网址在store方法内完成此操作,但是我想严格保留控制器代码来管理记录创建。 除此之外,我还必须发送201/404代码以及返回的数据。
我还考虑过创建另一个控制器来处理API响应,然后调用该表单,但听起来还是太多了-我猜这应该很简单。
在laravel中,您可以使用一种有用的方法来确定已发送的请求是AJAX请求还是普通请求,即:
$request->wantsJson()
因此,在返回函数的控制器内部,您将执行一条if语句:
if ($request->wantsJson()) {
return response()->json();
}else{
return view(...);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.