Post 方法上的 MethodNotAllowedHttpException

Posted

技术标签:

【中文标题】Post 方法上的 MethodNotAllowedHttpException【英文标题】:MethodNotAllowedHttpException on Post Method 【发布时间】:2019-06-28 12:34:06 【问题描述】:

开始使用 Laravel,我在尝试发布到我的一个页面时遇到了问题。

我正在使用 Postman 为我的 /clock 页面创建一个发布请求。

该帖子正在发送一个带有单个字段的简单 Json:

这是帖子的标题:

我的路由目前放在 routes/api.php 文件夹中,包含以下内容:

<pre>
    <?php

    use Illuminate\Http\Request;

    /*
    |--------------------------------------------------------------------------
    | API Routes
    |--------------------------------------------------------------------------
    |
    | Here is where you can register API routes for your application. These
    | routes are loaded by the RouteServiceProvider within a group which
    | is assigned the "api" middleware group. Enjoy building your API!
    |
    */

    Route::middleware('auth:api')->get('/user', function (Request $request)                         
        return $request->user();
    );
    Route::post('/json', 'FormController@post');
    Route::post('/clock', 'PayrollController@index');

它链接到app/Http/Controller/PayrollController.php 的控制器的代码如下所示:

    <?php

    namespace App\Http\Controllers;


    use GuzzleHttp\Client;
    use App\Company;
    use Response;
    use Illuminate\Support\Facades\App;
    use Illuminate\Support\Facades\DB;
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Auth;

    class PayrollController extends Controller
    

        function __construct()
        
        

        public function index()
        
        

当我在 Postman 中执行帖子时,这是我得到的错误:

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException:  in file /var/www/html/oit_laravel1/vendor/laravel/framework/src/Illuminate/Routing/RouteCollection.php on line 255
Stack trace:
  1. Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException-&gt;() ...

【问题讨论】:

检查您的服务器日志。这看起来像邮递员错误。有时邮递员会随机发送 get 而不是 post。这将显示在您的服务器日志中。你也可以发布 php artisan route:list 的结果吗? 另外在标签页的正文旁边添加一个标题:Accept and the Value application/json 如果你在 api.php 中定义路由,Laravel 会自动为它们添加前缀 /api。你是发布到 /api/clock 还是只发布到 /clock? Error 405 (Method Not Allowed) Laravel 5的可能重复 【参考方案1】:

问题是你在get Request上定义了一个post Route,定义你的请求使用post header,如果使用表单,改变方法来发布,如果不查询数据库,改变你的Route到

 Route::get('/clock', 'PayrollController@index');

【讨论】:

以上是关于Post 方法上的 MethodNotAllowedHttpException的主要内容,如果未能解决你的问题,请参考以下文章

REST服务上的错误请求错误使用POST(json数据)调用方法?

POST 上的 Spring 重定向

带有反应应用程序的 POST 上的 ASP.NET CORS 异常

在API上的“post”方法获取“org.glassfish.jersey.message.internal.HeaderValueException”错误

如何使用NodeJS上的本机Ajax发送Post by Post请求

HTTP的几种请求方法用途?