1.) 在 api.php 中有一个 Laravel 路由:
Route::group(['prefix' => 'admin'], function() {
Route::group(['prefix' => 'images'], function() {
Route::put('/{image}', [\App\Http\Controllers\ImagesController::class, 'update']);
});
});
更新方法代码:
public function update(Image $image, ImageData $data) {
$image->update([
'title' => $data->title,
'source' => $data->source
]);
return response('', 200);
}
2.) Nuxt:
export const useApiFetch = async <T>(request, opts?) => {
const config = useRuntimeConfig()
return useFetch<T>(request, {baseURL: config.public.apiBase, ...opts})
}
组件
const finishEditing = async () => {
await useApiFetch(`admin/images/${image.id}`, {
method: 'PUT',
data: props.image
})
store.editingTitle = false
store.editingSource = false
}
发送 PUT 或 PATCH 请求时,返回
302 Found
并重定向到 localhost:3000,这是前端的地址。为什么会出现这种情况? API 路由的中间件设置是开箱即用的。
我之前遇到过类似的问题,当请求未经身份验证时就会发生这种情况。您需要检查您的请求是否正确发送到控制器。
也许你的请求会在中间件或其他东西中被切断。