Laravel REST API-基于accept标头参数返回不同的内容类型

Laravel REST API-基于accept标头参数返回不同的内容类型,laravel,rest,Laravel,Rest,我的一个端点需要返回PDF文件。通常默认情况下,它是JSON 您认为使用if($request->header('accept')==='application/pdf')返回pdf文件好吗?它是否打破了单一责任 如果我有很多这样的例外呢?对于很多方法来说,使用很多if/else语句太复杂了。您的建议是什么?在响应的最后一个api中使用header函数为php设置header,并代表该api为前端检查header contentType,您剩下的工作是在响应的最后一个api中使用header函数

我的一个端点需要返回PDF文件。通常默认情况下,它是JSON

您认为使用
if($request->header('accept')==='application/pdf')
返回pdf文件好吗?它是否打破了单一责任


如果我有很多这样的例外呢?对于很多方法来说,使用很多if/else语句太复杂了。您的建议是什么?

在响应的最后一个api中使用header函数为php设置header,并代表该api为前端检查header contentType,您剩下的工作是在响应的最后一个api中使用header函数为php设置header,并代表该api为前端检查header contentType完成剩下的工作

您可以创建中间件并应用于单个端点或一组端点。这将使未来的一切都井然有序且易于管理。

您可以创建中间件并应用于单个端点或一组端点。这将使未来的一切都井然有序且易于管理。

您必须制作一个中间件,并将其添加到kernel.php的protected$middleware数组中,并在“handle”函数中执行此代码

  $response = $next($request);

  if ($response instanceof ClassNameFromWhichObjectIsMatch )
        return $response;

   // add other headers
   //  $response->header($key, $value);

   return $response;

您必须制作一个中间件,并将其添加到kernel.php的protected$middleware数组中,然后在“handle”函数中执行此代码

  $response = $next($request);

  if ($response instanceof ClassNameFromWhichObjectIsMatch )
        return $response;

   // add other headers
   //  $response->header($key, $value);

   return $response;

它是BinaryFileResponse对象吗?我使用laravel pdf包,它直接返回pdf。我不完全确定它的对象类型。它是BinaryFileResponse对象吗?我使用laravel pdf包,它直接返回pdf。我不能完全确定它的对象类型。这是有道理的,但我是否需要为每种不同类型的响应创建不同的方法-以消除语句-?这取决于您的应用程序需要。如果您支持PDF、XLSV和其他类型的文件,我想您可能需要每个文件,但我会等待(或要求)一个更有经验的开发人员,这是有意义的,但我是否需要为每种不同类型的响应创建不同的方法-以摆脱语句-?这取决于您的应用程序需要。如果您支持PDF、XLSV和其他类型的文件,我想您可能需要每个文件,但我会在这里等待(或要求)一个更有经验的开发人员