【问题标题】:MethodNotAllowedHttpException on Post MethodPost 方法上的 MethodNotAllowedHttpException
【发布时间】: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?

标签: php laravel


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-07
    • 2019-12-01
    • 1970-01-01
    • 2016-11-24
    • 2019-02-12
    • 2017-09-21
    • 2015-06-02
    • 1970-01-01
    相关资源
    最近更新 更多