如何在apache Laragon - laravel 10中允许方法DELETE?

How to allow method DELETE in apache Laragon - laravel 10?

提问人:David Lee 提问时间:9/18/2023 更新时间:9/20/2023 访问量:60

问:

我有一个香草安装和一个香草安装,我把它作为一个单独的项目,它消费说,所有的登录都有效。LaragonLaravelv10JetstreamAPIVueAPI

我正在使用并且它在保存时有效,我创建了 a 和 a ,所以我有一个带有 destroy 函数:axiosmodelcontrollerNoteController

    public function destroy(Note $note)
    {
        
        $note->delete();

        return response()->noContent();
    }

当我这样做时,我可以看到删除路由:php artisan route:list --name=note

DELETE   api/note/{note}................. note.destroy › Api\NoteController@destroy

我在 api.php 中使用:

Route::apiResource('/note', NoteController::Class);

在 vue 中,我正在做(其中 item 是一个 note 对象):

api.delete<Note>('/api/note', { data: item })

我得到一个:405 Method Not Allowed

message
: 
"The DELETE method is not supported for route api/note. Supported methods: GET, HEAD, POST."

我可以在响应标题中看到:
enter image description here

我尝试在标签内添加以下内容:httpd.conf<Directory "F:/laragon/www">

<Limit GET POST PUT DELETE>
    Allow from all
</Limit>

并重新启动 Laragon,我仍然得到.405

我尝试了有关 Laravel 配置的其他问题中的其他解决方案,但我仍然有错误,并且我在route:list

PHP Laravel Apache HTTP 拉拉贡

评论

0赞 lagbox 9/18/2023
因为路径不会......您不是通过请求的正文传递 ID,而是作为路由参数传递api/note/{note-id}api/note
0赞 Koala Yeung 9/18/2023
消息“路由不支持 DELETE 方法...”是 Laravel 消息。所以拉拉贡已经把请求传递给了拉拉维尔。你的问题不在于拉拉贡。
0赞 David Lee 9/18/2023
@lagbox是的,就是这样,你是否有任何文档可以解释为什么路由 in 和 destroy 函数会这样说?所有这些都是用 Artisan 生成的,该函数建议将一个对象作为参数,它不是在做一个而是做一个route:listdestroyNotefindByID$category->delete()
0赞 lagbox 9/18/2023
它确实说了......就在 ;这是你的问题......这表明您需要一个路由参数...rouet:listDELETE api/note/{note}{note}
0赞 David Lee 9/19/2023
@lagbox是的,但它也说它的函数是期待一个对象(注 $note),它被使用:这就是混乱开始的地方。拥有或类似会更清楚destroy$note->delete()public function destroy(Note $id)

答:

0赞 Gautam Patadiya 9/18/2023 #1

我建议您在JSON表单请求参数中传递_method=DELETE。

0赞 Milan Majer 9/18/2023 #2

尝试像这样调用 API:

api.delete<Note>(`/api/note/${item.id}`)

(编辑:删除了api调用的第二个参数:{_method: 'delete'})

评论

1赞 David Lee 9/18/2023
这在没有{_method: 'delete'}