gpt4 book ai didi

java - 为什么 REST Controller 返回 404 状态代码?

转载 作者:行者123 更新时间:2023-12-02 10:42:21 25 4
gpt4 key购买 nike

我正在尝试更新数据库中的数据。我在前端使用 jQuery/AJAX,在后端使用 REST/MyBatis/MySQL。不幸的是,REST Controller 返回 404 状态代码。请查看我的 REST Controller 代码:

@RestController
@RequestMapping("/documents")
public class DocumentResources {

private DocumentsMapper mapper;

public DocumentResources(DocumentsMapper mapper) {
this.mapper = mapper;
}

@PostMapping("/updateDocument")
public List<Documents> updateDocument (@RequestBody Documents document) {
mapper.updateDocument(document);
return mapper.getAllDocuments();
}
}

这是我的 DocumentsMapper 类代码:

@Mapper
public interface DocumentsMapper {
@Select("select * from documents")
List<Documents> getAllDocuments();

@Update("UPDATE documents SET title = #{title}, author = #{author}, src = #{src} WHERE id =#{id}")
void updateDocument(Documents document);
}

这是我的 AJAX 方法:

$( "#target" ).submit(function( event ) {
event.preventDefault();

var formData = {
id : $("#target #id").val(),
title : $("#target #title").val(),
author : $("#target #author").val(),
src: $("#target #src").val(),
createTime : $("#target #createTime").val(),
editTime : $("#target #editTime").val()
}

$.ajax({
url: 'http://localhost:8088/documents/updateDocument',
type : "POST",
contentType : "application/json",
data : JSON.stringify(formData),
dataType : 'json',
success : function(result) {
},
error: function() {
window.location = "/error";
console.log('error', arguments);
},
complete: function() {
console.log('complete', arguments);
}
}).done(function() {
window.location = "/documents";
console.log('done', arguments);
});
});

更新

我刚刚尝试关闭 Spring Security 并且 POST 方法变得可以访问。以下是授权功能:

    protected void configure(HttpSecurity http) throws Exception {

http
.authorizeRequests()
.antMatchers("/resources/**", "/signup", "/about").permitAll()
.antMatchers("/administrator/**").hasRole("ADMIN")
.antMatchers("/users/**").hasRole("ADMIN")
.antMatchers("/documents/**").hasRole("ADMIN")
.antMatchers("/db/**").access("hasRole('ADMIN') and hasRole('DBA')")
.anyRequest().authenticated()
.and()
.formLogin()
.and()
.logout().logoutSuccessUrl("/login?logout")
.and()
.exceptionHandling().accessDeniedPage("/403")
// .and()
// .csrf()
;
}

更新

我尝试打开 SpringSecurity 但禁用 CSRF .csrf().disable()。之后 POST 方法就可以工作了。我认为禁用 CSRF 不是一个好主意。这可能会导致 XSS 攻击。所以我应该配置 CSRF token 生成及其交换。

最佳答案

1) Please check spring startup logs : you can get the url initialized for the project

2) 尝试放置应用程序的上下文路径,

these link myt be helpful : in spring MVC : How to Set Context root in Spring Mvc Project in spring boot : Add context path to Spring Boot application

sample url :

http://localhost:8088/ {contextPath}/documents/updateDocument

3) better use API documentation like swagger ui, you can try hitting the url easly and get the available urls in your controller classes.

关于java - 为什么 REST Controller 返回 404 状态代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52848832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com