Javascript 使用Java脚本从Spring Boot API端点获取数据时出现问题
我在web应用程序上工作,遇到了使用Java脚本从端点获取数据的问题。如果我在浏览器中键入endpoint adres,它可以很好地工作,但在脚本中却无法工作。response.ok返回False 下面是脚本:Javascript 使用Java脚本从Spring Boot API端点获取数据时出现问题,javascript,java,spring-boot,rest,web-applications,Javascript,Java,Spring Boot,Rest,Web Applications,我在web应用程序上工作,遇到了使用Java脚本从端点获取数据的问题。如果我在浏览器中键入endpoint adres,它可以很好地工作,但在脚本中却无法工作。response.ok返回False 下面是脚本: (function() { function requestAuthorization() { let response = fetch("http://localhost:8080/authorizationData")
(function() {
function requestAuthorization() {
let response = fetch("http://localhost:8080/authorizationData")
.then(response => response.json());
if (response.ok) {
let json = response.json();
alert(json);
} else {
alert("HTTP response not ok");
}
}
requestAuthorization();
})();
这是控制器:
@RestController
class AuthController {
private final AuthService service;
AuthController(AuthService service) throws IOException {
this.service = service;
}
@GetMapping("/authorizationData")
public ResponseEntity<AuthData> authorize() throws IOException {
return ResponseEntity.ok(service.getAuthData());
}
}
怎么了?如果您对我的工作有任何其他建议,我将很高兴听到
编辑
脚本和运行它的HTML文件都位于类路径的静态目录中。您应该这样做:
// mark your function as async
async function requestAuthorization() {
// always try using const rather than let
const response = await fetch("http://localhost:8080/authorizationData");
if (response.ok) {
const json = response.json();
alert(json);
} else {
alert("HTTP response not ok");
}
}
fetchapi返回一个承诺。因此,它是异步的。因此,当您访问
response.ok
时,承诺很可能尚未解决。将async添加到函数中,并等待对FetchAPI的调用来解决问题。否则,您可以将if子句直接放入then
块中,它也可以工作。这能解决你的问题吗?
// mark your function as async
async function requestAuthorization() {
// always try using const rather than let
const response = await fetch("http://localhost:8080/authorizationData");
if (response.ok) {
const json = response.json();
alert(json);
} else {
alert("HTTP response not ok");
}
}