Laravel 5 / Lumen Request Header?

You misunderstand the Laravel request object on two levels.

First, the error you are getting is because you were referencing the object instead of the Facade. Facades have a way of forwarding static method calls to non-static methods.

Second, you are sending the value as a header but are trying to access the request parameters. This will never give you what you want.

Here is a simple way to see an example of what you want by creating a test route like so:

Route::match(['get','post'], '/test', function (Illuminate\Http\Request $request) {
    dd($request->headers->all());
});

Post to this route and you will see your headers, one of which will be pubapi. Pay attention that the route method definition matches how you are submitting the request (ie GET or POST).

Let's apply this to the controller, ArticleController:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ArticleController extends Controller
{
    public function index(Request $request)
    {
        $pubapi = $request->header('pubapi'); // string
        $headers = $request->headers->all(); // array
        /*
          $pubapi === $headers['pubapi']
        */
    }
}

Try to change the Illuminate\Http\Request to Request.

- use Illuminate\Http\Request;
+ use Request;