【问题标题】:Error Message: "The GET method is not supported for this route. Supported methods: POST"错误消息:“此路由不支持 GET 方法。支持的方法:POST”
【发布时间】:2021-06-17 13:42:31
【问题描述】:

当我访问端点这个 http://localhost/newsapp_api/public/api/register 时,会显示此消息 “此路线不支持 GET 方法。支持的方法:POST”。 look to the link below

但是当我尝试注册新用户并通过邮递员程序为用户输入数据(姓名、电子邮件、密码)时 此消息显示为“消息”:“未定义属性:Illuminate\Database\Query\Builder::$map”。 它不提供 json 数据。 look to the link below

api.php

Route::POST('register', 'App\Http\Controllers\Api\UserController@store');

UserController.php

public function store(Request $request)
    {
        $request->validate([
            'name'  => 'required',
            'email' => 'required',
            'password'  => 'required'
        ]);
        $user = new User();
        // $user->name = $request->get( 'name' );
        // $user->email = $request->get( 'email' );
        // $user->password = Hash::make( $request->get( 'password' ) );
        $user->name = $request->name;
        $user->email = $request->email;
        $user->password = Hash::make( $request->password );
        $user->save();
        return new UserResource( $user );
    }

UserResource.php

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\ResourceCollection;
use Illuminate\Http\Resources\Json\Resource;

class UserResource extends ResourceCollection
{
    /**
     * Transform the resource collection into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return parent::toArray($request);
    }
}

【问题讨论】:

  • 尝试使用表单数据。
  • 你说的是哪个表单数据?
  • 对不起,尝试使用Params代替body提交数据到终点
  • 请写下代码会变成什么样子
  • 如果您使用邮递员扩展程序,请将其扔掉并使用邮递员主应用程序。

标签: php laravel api laravel-5


【解决方案1】:

当你在浏览器中输入你的端点时,你的第一个问题,浏览器会发送 GET 方法到你的端点。由于您的端点只接受 POST 方法,因此会引发错误。

第二个问题是您使用 ResourceCollection 扩展了 UserResource,因此 UserResource 需要一个集合。但是,您将不是集合的 User 对象传递给 UserResource。

我认为您的意思是创建一个 UserResource 作为扩展 JsonResource 的资源

https://laravel.com/docs/8.x/eloquent-resources#introduction

use Illuminate\Http\Resources\Json\JsonResource;

class UserResource extends JsonResource

【讨论】:

  • 非常感谢,您的代码运行成功
  • 我怎样才能做到这一点?
  • 点击向上箭头图标表示赞成,点击复选图标表示接受答案。
  • 好的,但是我有这个问题“感谢您的反馈!声望低于 15 的人的投票将被记录,但不要更改公开显示的帖子得分。”
猜你喜欢
  • 2021-12-23
  • 1970-01-01
  • 2020-09-04
  • 1970-01-01
  • 2020-05-15
  • 1970-01-01
  • 1970-01-01
  • 2019-08-28
  • 2021-04-11
相关资源
最近更新 更多