javascript 嘗試從我的 spring boot api 中獲取資料,并每次都回傳“無法獲取”錯誤。
我確定請求會到達 api,因為每次點擊提交時,我都會收到列印陳述句,我將其放入我的 get 方法中,并按應有的方式記錄下來。所以回來的路上一定有什么地方出錯了。
獲取方法:
@RestController
@RequestMapping("/familyMember")
public class FamilyController {
private FamilyRepository familyRepository;
public FamilyController(FamilyRepository familyRepository) {
this.familyRepository = familyRepository;
}
@GetMapping("/id/{id}")
public FamilyMember getById(@PathVariable("id") Long id) {
Optional<FamilyMember> optional = familyRepository.findById(id);
if (!optional.isPresent()) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND);
}
FamilyMember familyMember = optional.get();
System.out.println(id); //print statement to make sure api is reached
return familyMember;
}
Javascript代碼:
const url = 'http://localhost:4001/familyMember/';
submit.onclick = async() => {
const endpoint = url 'id/' input.value;
try {
const response = await fetch(endpoint); // error occures here because no code below is executed
output.style.color = 'green'; // to see if fetch continues(apparently it doesn't)
if (response.ok) {
output.innerHTML = await response.json();
}
} catch(error) {
output.innerHTML = error; // gives me "Failed to fetch" in the html
}
我不確定該錯誤是在服務器端還是客戶端。當我在終端中使用 curl 時,該 api 為我提供了正確的資訊......那么正確的 js 代碼?
提前致謝。
uj5u.com熱心網友回復:
居然找到了答案。在@RestController 上方,我需要注釋@CrossOrigin,以便api 允許來自不同來源的請求(在這種情況下為html 檔案)。
@CrossOrigin
@RestController
@RequestMapping("/familyMember")
public class FamilyController {
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/432085.html
標籤:javascript 爪哇 弹簧靴 http
上一篇:Flutter'List<dynamic>'不是'Map<String,dynamic>'型別的子型別
下一篇:在httpPUT中顫振原始資料
