Hi,
Я делаю свой личный проект как "обучаемый".
Я столкнулся с проблемой.
Я хочу отправить запрос PUT на сервер, а сервер перенаправить на другой URL (GET request).
- Запрос «PUT / course / 1 / edit»
- Сервер обрабатывает некоторые логи c и перенаправляет на «GET / members / 1 / courses / manage»
Однако сервер не работает.
Spring MVC Сообщение об ошибке - Request method 'PUT' not supported
.
Chrome Ошибка консоли - PUT http://localhost:8080/members/1/courses/manage 405
Если отображение запроса - POST, а GET - не PUT, перенаправление возврата работает хорошо.
Мне просто интересно, почему отображение перенаправления запросов PUT mapping возвращает метод PUT.
Ниже, Spring MVC нашел имя представления "redirect: / members / 1 / courses / manage" и перенаправил на "members / 1 / courses / manage", используя метод PUT. На данный момент я не могу понять, почему пружина mvc использует метод PUT для перенаправления.
o.s.web.servlet.view.RedirectView : View name 'redirect:/members/1/courses/manage', model {}
o.s.web.servlet.DispatcherServlet : Completed 302 FOUND
o.s.web.servlet.DispatcherServlet : PUT "/members/1/courses/manage", parameters={}
.w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'PUT' not supported]
o.s.web.servlet.DispatcherServlet : Completed 405 METHOD_NOT_ALLOWED
И если вам известен какой-либо документ, который может помочь мне в решении этой проблемы, пожалуйста, порекомендуйте его мне.
Заранее спасибо!
передний код
function courseEdit(courseUrl) {
let formDataArray = $("#course-edit-form").serializeArray();
let formDataObject = {};
for (const element of formDataArray) {
formDataObject[element.name] = element.value;
}
let courseEditFormDataJsonFormat = JSON.stringify(formDataObject);
$.ajax({
type: 'PUT',
url: courseUrl,
data: courseEditFormDataJsonFormat,
contentType: 'application/json'
}).done(function( data, textStatus, jqXHR ) {
});
}
задний код
@PutMapping("/courses/{id}")
public String editCourse(@PathVariable Long id, @RequestBody CourseDto courseDto) {
CourseDto foundCourseDto = courseService.findById(id);
Long instructorId = foundCourseDto.getInstructor().getId();
// redirect:/members/1/courses/manage
return "redirect:/members/"+instructorId+"/courses/manage";
}
@GetMapping("/members/{id}/courses/manage")
public String courseDashboard(@PathVariable Long id, Model model) {
CoursesDto ownCourse = courseService.findOwnCourse(id);
model.addAttribute("coursesDto", ownCourse);
return "course/course_dashboard";
}