【问题标题】:The POST method is not supported for this route. Supported methods: GET, HEAD. in laravel apiResource此路由不支持 POST 方法。支持的方法:GET、HEAD。在 laravel api资源中
【发布时间】:2021-01-21 16:19:00
【问题描述】:

我正在使用资源收集在 Laravel 7 中创建一个 CRUD API,但是当我尝试使用发布请求发送数据时,它给出了

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException:此路由不支持 POST 方法。支持的方法:GET、HEAD。在文件 D:\xampp\htdocs\safaripet\backend\vendor\laravel\framework\src\Illuminate\Routing\AbstractRouteCollection.php 第 117 行

我的路线

Route::apiResource('locations','Api\LocationsController');

我的控制器代码

<?PHP

namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Http\Resources\Locations as LocationsResource;
use App\Locations;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Validator;

 class LocationsController extends Controller
 {
 /**
 * Display a listing of the resource.
 *
 * @return \Illuminate\Http\Response
 */
 public function index()
 {
    return new LocationsResource(Locations::paginate(3));
 }

 /**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
 public function store(Request $request)
 {
    $request->validate([
        'location_name' => 'required|unique:locations',
    ], 
    [
        'location_name.required' => 'Enter name',
        'location_name.unique' => 'location name already exist',
    ]);
    
    $locations = new Locations();
    $locations->location_name = $request->location_name;
    $locations->slug = Str::slug($request->location_name);
    $locations->save();
    
    return new LocationsResource($locations);
}

/**
 * Display the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function show($id)
{
    //
}

/**
 * Update the specified resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function update(Request $request, $id)
{
    //
}

/**
 * Remove the specified resource from storage.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function destroy($id)
{
    //
}
}

请帮帮我

提前致谢。

【问题讨论】:

    标签: reactjs laravel


    【解决方案1】:

    您发布到http://localhost:8000/locations,而您的路线列表明确定义了URI http://localhost:8000/api/locations

    【讨论】:

    • 先生感谢您的回复,现在它只是返回我的刀片文件
    • 什么刀片文件?请验证您的store 函数是否被触发,例如在函数开头添加dump。您是否在发布请求中发送了正确的身份验证标头?也许您被重定向到登录页面?
    • 在发送 Content-Type application/json 的标头中
    • 它给出了 Unexpected '
    • 您的 API 路由不是在身份验证中间件后面吗?它在哪里说Unexpected &lt;
    猜你喜欢
    • 2020-06-05
    • 2020-04-19
    • 1970-01-01
    • 2021-05-08
    • 2020-01-22
    • 2020-04-25
    • 1970-01-01
    • 2020-06-03
    • 2019-08-28
    相关资源
    最近更新 更多