Ich versuche, REST-Endpunkte auf einer Anwendung (Spring-Boot) von einem anderen (reactjs) aufzurufen. Die Anwendungen werden auf den folgenden Hosts und Ports ausgeführt.Kann nicht verbinden react.js Login SpringBoot App
- REST-Anwendung, mit Federverschluß, http://localhost:8080
- HTML-Anwendung, mit reactjs, http://localhost:9000
Ich versuche, die Login-Informationen von reactjs senden to-Boot zu springen, aber ohne Erfolg.
Reactjs:
import React from 'react';
export default class Login extends React.Component {
constructor() {
super();
this.state = {
login:"",
password:""
};
this.handleChange = this.handleChange.bind(this);
}
handleChange() {
this.setState({login: this.state.login});
}
render() {
return (
<form role="form">
<div>
<input type="text" name="login" onChange={this.handleChange} />
<input type="password" name="password"/>
</div>
<button onClick={this.login.bind(this)}>Login</button>
</form>
);
}
login() {
var xmlhttp = new XMLHttpRequest(); // new HttpRequest instance
var url = "http://localhost:8080/test/login"
xmlhttp.open("POST", url);
xmlhttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xmlhttp.send(JSON.stringify({login: this.state.login}));
}
}
und Spring-boot:
@CrossOrigin(origins = "http://localhost:9000")
@RequestMapping(value = "/test/login")
public Boolean testLogin(@RequestParam String login) {
if (login.equals ("ajt"))
return true;
else {
return false;
}
}
Ich kann sehen, dass die beiden Apps für obwohl reactjs anschließen gibt mir 400-Fehler, wenn ich vorlegen, die Konsole der Frühlings-Boot-App sagt mir:
Resolved exception caused by Handler execution: org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'login' is not present
ich nur, dass aus der Frühjahr-Boot-Seite übernehmen kann, kann es nicht tra nslate was immer über react.js gesendet wird.
PS: Bär mit mir, ich habe für etwa 6 Monate codiert.
hehe, ich habe gerade den letzten wieder kommentiert :) –
Ich postete diese neue Frage, da ich fühlte, dass es nicht gut formuliert war. Dargestellt könnte es mehr Interesse wecken. Ich habe diese Methode bereits getestet und den folgenden Fehler erhalten: 'Erforderliche Anforderung Körper fehlt: Öffentliche java.lang.Boolean com.common.web.TestController.testLogin (java.lang.String)' –
Ah, sehe ich das Problem . Ihr 'setState' funktioniert nicht richtig, so dass Ihr Status niemals die Login-Daten erhält. Im Allgemeinen sollten Sie in Ihrer Konsole bequem debuggen und überprüfen, ob der Wert von Variablen Ihren Erwartungen entspricht.Wenn Sie den Code während der 'login'-Funktion pausieren und den Wert von' this.state.login' testen, werden Sie feststellen, dass er nicht definiert ist. Ich werde meine Antwort aktualisieren, um weitere Details zu geben ... – gravityplanx