Post方法不允许在请求正文中包含数据Laravel 9(postman)

cdmah0mi  于 2022-11-07  发布在  Postman
关注(0)|答案(2)|浏览(237)

我已经创建了一个API,它可以工作,但是有一个奇怪的行为,它不允许我在请求的正文中发送数据。
api.php

Route::controller(AuthController::class)->group(function () {
    Route::post('login', 'login');
    Route::post('register', 'register');
    Route::post('logout', 'logout');
    Route::post('refresh', 'refresh');
    Route::get('me', 'me');
});

AuthController.php

class AuthController extends Controller
{

    public function __construct()
    {
        $this->middleware('auth:api', ['except' => ['login','register']]);
    }

    public function register(Request $request){
        $request->validate([
            'name' => 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:6',
        ]);

        $user = User::create([
            'name' => $request->name,
            'email' => $request->email,
            'password' => Hash::make($request->password),
        ]);

        $token = Auth::login($user);
        return response()->json([
            'status' => 'success',
            'message' => 'User created successfully',
            'user' => $user,
            'authorisation' => [
                'token' => $token,
                'type' => 'bearer',
            ]
        ]);
    }
}

如果我像这样发送数据

localhost:8000/api/register?name=odlir4&email=odlirgz4@gmail.com&password=password

它工作得很好,但是如果我这样发送它

这不起作用,有人知道为什么会发生这种情况吗?我认为它应该起作用,还是我错了?
谢谢你,谢谢你

erhoui1w

erhoui1w1#

在路由寄存器中定义POST方法
api.php

Route::post('register', 'register');

在postman中,您使用GET方法发送数据,因为它传递参数

localhost:8000/api/register?name=odlir4&email=odlirgz4@gmail.com&password=password

选项卡主体https://www.postman.com/postman/workspace/published-postman-templates/request/631643-083e46e7-53ea-87b1-8104-f8917ce58a17中应该是这样

y3bcpkx1

y3bcpkx12#

您需要使用以下方法在控制器中获取表单数据

public function register(){

  $datarequest = $this->input->post();

// other code

}

或者,如果您要在json中发送请求

public function register(){

  $datarequest = json_decode(file_get_contents('php://input'),true);

// other code

}

相关问题