Ресурсы Laravel Настройка пользовательских заголовков - PullRequest
0 голосов
/ 10 января 2019

Итак, я пытаюсь установить заголовок контроля кэша в моем ответе внутри моего ресурса, но, похоже, он не работает. Я всегда получаю «no-cache» в заголовке контроля кэша в моем ответе.

Я следовал этому руководству по курсу и сделал следующее:

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class RouteResource extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return [
            'id' => $this->id,
            'from' => $this->from,
            'to' => $this->to,
            'distance' => empty($this->distance) ? "" : $this->distance,
            'duration' => empty($this->duration) ? "" : $this->duration,
            'suspended' => (!empty($this->suspended_at))? true:false,
        ];
    }

    /**
     * Customize the outgoing response for the resource.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Illuminate\Http\Response  $response
     * @return void
     */
    public function withResponse($request, $response)
    {
        $response->header('Cache-Control', 'max-age=3600');
    }
}

Однако это не сработало. Я наконец смог вернуть заголовок, выполнив это:

return response(RouteResource::collection($routes))->header('Cache-Control', 'max-age=3600');

Но это неправильно или больше похоже на взлом. Я хочу знать, почему он изначально не работал с моим ресурсом, как описано в документации, как мне вернуть заголовок cache-control в моем ответе?

1 Ответ

0 голосов
/ 18 января 2019

1.создать файл \ App \ Http \ Middleware \ NoCache.php

<?php

namespace App\Http\Middleware;

use Closure;

class NoCache  
{
    public function handle($request, Closure $next)
   {
       $response = $next($request);

       $response->header('Cache-Control', 'no-cache, must-revalidate');

       return $response;
    }
}

2.Open \ App \ Http \ Kernel.php и добавьте к промежуточному программному обеспечению $, если хотите, на все

 \App\Http\Middleware\NoCache::class,

или укажите ключ для выбора.

'nocache' => \App\Http\Middleware\NoCache::class,
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...