如果您正在使用JPA,则会出现此问题。Spring Boot Repository已经内置了所有请求,因此您的请求必须匹配Repository请求。这是我找到的唯一一个具有工作Spring Boot POST的示例https://dzone.com/articles/crud-using-spring-data-rest。关键是您必须匹配Repository Rest调用。
您的存储库接口将如下所示,加上任何覆盖,没有实现类。
public interface UseerRepository extends CrudRepository<User, Integer>{
}
你的控制器将会是这样的。注意请求值/users,它是实体名称加上一个S。
@RestController
public class LoginController {
@RequestMapping("/api/login")
public String home() {
return "login";
}
UserWrapper userWrapper = new UserWrapper();
@RequestMapping(value = "/users", method = RequestMethod.POST, headers = "Content-type: application/*")
public @ResponseBody ResponseEntity getCredentials(@RequestBody UserDTO userDTO) {
User user = userWrapper.wrapUser(userDTO);
if (userDTO.getPassword().equals(user.getPassword())) {
return new ResponseEntity(HttpStatus.OK);
} else {
return new ResponseEntity(HttpStatus.BAD_REQUEST);
}
}
}
你的应用程序配置文件应该看起来像这样 注意 @ComponentScan 没有 basepackage={"com"} 如果你这样做,那么你的 JPA 将无法工作
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.data.rest.webmvc.config.RepositoryRestMvcConfiguration;
@Configuration
@ComponentScan
@EnableJpaRepositories
@Import(RepositoryRestMvcConfiguration.class)
@EnableAutoConfiguration
@PropertySource("application.properties")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
如果您想覆盖存储库的POST请求,请在控制器或服务类中执行。我希望我已经解释得足够清楚了,但是那个示例确实有效,您不再需要编写大量的粗糙代码。
Content-type: application/json
。 - BartekUserDTO
类以及你正在发布的JSON
吗?示例数据就可以,只是为了结构。 - EpicPandaForce