php - laravel route api请求工作没有任何方法限制
问题描述
我是 laravel 框架的初学者,在构建简单的 api 路由时遇到了一个问题:我在 api.php 中创建
Route::resource('userss','User\UserController');
用户控制器具有标准 api 方法(索引、存储、显示等),之后我使用以下命令列出了路由:
php artisan list:route
我得到了如下图所示的结果
路由/api.php
use Illuminate\Http\Request;
Route::resource('userss','User\UserController');
用户控制器.php
namespace App\Http\Controllers\User;
use App\Http\Controllers\Controller;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Validator;
class UserController extends Controller
{
public $successStatus = 200;
public $appNameToken = 'stiskAppNameToken';
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$users = User::all();
return response()->json(['data'=> $users],200);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
$rules = [
'name' => 'required|min:4',
'username' => 'required|min:4|unique:users',
'email' => 'required|email|unique:users',
'password' => 'required|min:4|confirmed',
'status' => 'required',
'dept_id' => 'required'
];
$this->validate($request,$rules);
$data = $request->all();
$data['password'] = bcrypt($request->password);
$data['verified'] = User::USER_VERIFIED;
$data['verification_token'] = User::generateVerificationCode();
$user = User::create($data);
return response()->json(['data' => $user],201);
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
$user = User::findOrFail($id);
return response()->json(['data'=>$user],200);
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($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)
{
//
}
}
但现在的问题是每次我从邮递员发出请求时mylocal.test/userss/
使用不同的方法(PUT、POST、GET 等)我得到了一个用户列表(执行了索引方法!)
问题是什么?为什么所有方法请求都将执行@index 方法体。
我已经MethodNotAllowedHttpException
在渲染功能中处理过,但没办法
假设 Route::resource('userss','User\UserController');
处理这样的问题?并将我的请求路由到控制器中的正确方法?
更新:我认为问题出在邮递员或我的本地网络服务器中 同样在使用身份验证后,您将不会遇到这个问题,谢谢大家
解决方案
api/
如果您api.php
正确定义了路由,它应该在 URI 前面有一个。
请你再检查一遍好吗?
+--------+-----------+--------------------------+----------------+--------------------------------------------------+--------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+-----------+--------------------------+----------------+--------------------------------------------------+--------------+
| | GET|HEAD | / | | Closure | web |
| | GET|HEAD | api/user | | Closure | api,auth:api |
| | GET|HEAD | api/userss | userss.index | App\Http\Controllers\User\UserController@index | api |
| | POST | api/userss | userss.store | App\Http\Controllers\User\UserController@store | api |
| | GET|HEAD | api/userss/create | userss.create | App\Http\Controllers\User\UserController@create | api |
| | GET|HEAD | api/userss/{userss} | userss.show | App\Http\Controllers\User\UserController@show | api |
| | PUT|PATCH | api/userss/{userss} | userss.update | App\Http\Controllers\User\UserController@update | api |
| | DELETE | api/userss/{userss} | userss.destroy | App\Http\Controllers\User\UserController@destroy | api |
| | GET|HEAD | api/userss/{userss}/edit | userss.edit | App\Http\Controllers\User\UserController@edit | api |
+--------+-----------+--------------------------+----------------+--------------------------------------------------+--------------+
我克隆了您发布的控制器,但一切正常。
请参阅下面的屏幕截图。
推荐阅读
- html - 如何在文本框中显示错误消息,除了角度 8 中的数字/数字之外的任何其他内容
- asp.net - ASP.NET Core - 在所有路由上提供 index.html 而无需重写 URL
- python - 注释 YAML 文件中现有的键值对
- racket - 如何在 Racket 的函数中重新分配变量?
- python - How to correct Python-Tensorflow has no attribute error ''getdlopenflags'?
- reactjs - 带有 React 和 Docker 的 ASP.Net Core 2.2 或 3.1 SPA
- python - Flask and Pytest - PermissionError: [WinError 32] The process cannot access the file because it is being used by another process
- cmake - Cmake support for tasking tri-core compiler toolchain
- python - Xarray 按多次运行和时间分组
- three.js - Showing Point Cloud Structure using Lighting in Three.js