Laravel 带有请求正文的 DELETE 方法
Laravel DELETE method with request body
我一直在尝试向我的删除方法添加带有规则和消息的 FormRequest
,但是返回的请求是空的,而且规则每次都失败。
是否可以在delete方法中获取到请求数据?
这是我的要求class:
use App\Http\Requests\Request;
class DeleteRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'staff_id' => ['required', 'exists:users,uid'],
'reason' => ['required', 'string'],
];
}
/**
* Get custom messages for validator errors.
*
* @return array
*/
public function messages()
{
return [
'staff_id.required' => staticText('errors.staff_id.required'),
'staff_id.exists' => staticText('errors.staff_id.exists'),
'reason.required' => staticText('errors.reason.required'),
'reason.string' => staticText('errors.reason.string'),
];
}
}
控制器:
/**
* Handle the 'code' delete request.
*
* @param integer $id The id of the code to fetch.
* @param DeleteRequest $request The request to handle the data.
* @return response
*/
public function deleteCode($id, DeleteRequest $request)
{
dd($request->all());
}
即使 HTTP/1.1 规范没有明确声明 DELETE 请求不应该有实体主体,一些实现完全忽略包含您的数据的主体,例如某些版本的 Jetty 和 Tomcat。另一方面,一些客户端也不支持发送。
将其视为 GET
request。你见过表单数据吗? DELETE
请求几乎相同。
你可以阅读很多关于这个主题的文章。从这里开始:
RESTful Alternatives to DELETE Request Body
您似乎想要改变资源的状态而不是破坏它。软删除不是删除,因此需要 PUT
或 PATCH
方法,它们都支持实体主体。如果软删除不是这种情况,那么您将通过一个调用执行两个操作。
我一直在尝试向我的删除方法添加带有规则和消息的 FormRequest
,但是返回的请求是空的,而且规则每次都失败。
是否可以在delete方法中获取到请求数据?
这是我的要求class:
use App\Http\Requests\Request;
class DeleteRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'staff_id' => ['required', 'exists:users,uid'],
'reason' => ['required', 'string'],
];
}
/**
* Get custom messages for validator errors.
*
* @return array
*/
public function messages()
{
return [
'staff_id.required' => staticText('errors.staff_id.required'),
'staff_id.exists' => staticText('errors.staff_id.exists'),
'reason.required' => staticText('errors.reason.required'),
'reason.string' => staticText('errors.reason.string'),
];
}
}
控制器:
/**
* Handle the 'code' delete request.
*
* @param integer $id The id of the code to fetch.
* @param DeleteRequest $request The request to handle the data.
* @return response
*/
public function deleteCode($id, DeleteRequest $request)
{
dd($request->all());
}
即使 HTTP/1.1 规范没有明确声明 DELETE 请求不应该有实体主体,一些实现完全忽略包含您的数据的主体,例如某些版本的 Jetty 和 Tomcat。另一方面,一些客户端也不支持发送。
将其视为 GET
request。你见过表单数据吗? DELETE
请求几乎相同。
你可以阅读很多关于这个主题的文章。从这里开始:
RESTful Alternatives to DELETE Request Body
您似乎想要改变资源的状态而不是破坏它。软删除不是删除,因此需要 PUT
或 PATCH
方法,它们都支持实体主体。如果软删除不是这种情况,那么您将通过一个调用执行两个操作。