Ich fange mit Spring und REST
Anwendung. Momentan entwickle ich eine eigene Anwendung und bin dabei geblieben.Spring Boot @RestController keine Antwort
Die App ist genau wie Standard-Spring-Boot-Projekt unterteilt. Alle Controller sind im Paket web
enthalten. Einer der "Standard" -Controller ist verantwortlich für die Bearbeitung der Anfrage HTTP
und die Rückgabe einer HTML
Website. Ich habe einen REST
Controller hinzugefügt, der auf POST
Anfrage von der ersten Steuerung reagieren sollte, aber ich erhalte einen 404
Fehler.
Wie sieht es im Code aus?
@RestController
@RequestMapping("/users")
public class UserRestController {
@Autowired
private UserService userService;
@RequestMapping(value = "/user", method = RequestMethod.POST, consumes = "application/json", produces = "application/json")
public ResponseEntity<?> getUser(@RequestParam("userId") String userId, Errors errors) {
AjaxUser response = new AjaxUser();
if (errors.hasErrors()) {
response.message = errors.getAllErrors().stream().map(x -> x.getDefaultMessage()).collect(Collectors.joining(","));
return ResponseEntity.badRequest().body(response);
}
response.setUser(userService.getUserById(Integer.getInteger(userId).intValue()));
return ResponseEntity.ok(response);
}
private class AjaxUser {
private User user;
private String message;
public void setUser(User user) {
this.user = user;
}
public void setMessage(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
@Override
public String toString() {
return "User { id:" + user.getId() + ", Name: " + user.getName() + ", surname: " + user.getSurname() + "}";
}
}
}
Von js-Datei ich eine Ajax-Abfrage senden, die einen Rest Controller auslösen sollte, hier ist der Code:
function sendUserId(id) {
var user = {};
user["userId"] = id;
console.log("USER: ", user);
$.ajax({
type: "POST",
contentType: "application/json",
url: "https://stackoverflow.com/users/user",
data: JSON.stringify(user),
dataType: 'json',
cache: false,
timeout: 100000,
success: function (user) {
var json = "<h4>Ajax Response</h4><pre>"
+ JSON.stringify(user, null, 4) + "</pre>";
console.log("SUCCESS : ", user);
},
error: function (e) {
var json = "<h4>Ajax Response</h4><pre>"
+ e.responseText + "</pre>";
console.log("ERROR : ", e);
}
});
}
userId
von einem html von jQuery genommen wird, console.log
zeigen bestehenden und richtigen Wert .
Hinweis: Es gibt einen Standard-Benutzer @Controller
die zum Anzeigen einer Benutzerliste zuständig ist, es funktioniert, Problem erscheint während eines Benutzer-ID REST
Controller senden. Es verhält sich genau wie der REST
Controller nicht vorhanden ist und der Browser 404 status response
zurückgibt. BTW, Seite verwenden ein Spring Secure, um sich anzumelden und so weiter.
Könnte jemand helfen?
BR Konrad
Ich überprüfe viele Möglichkeiten, aber immer noch kein Ergebnis. Hast du eine Idee, wie ich meine js-Datei neu erstellen soll, die den erwähnten Anfrageparameter senden soll? – okarmusk