繁体   English   中英

Laravel 5.4-表单/ API /视图

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM