Не в состоянии получить доступ к данным, созданным серверным API в Javascript, но работает на Почтальоне
Это странная проблема, и я пытался отладить ее в течение дня безрезультатно. Я написал REST API
в Spring 4
и, кажется, работает нормально. Я проверил ссылки с почтальоном, они работают нормально, и даже когда я проверяю их в браузере, они работают нормально. Так что мои работы, как это, если я позвоню,
http://localhost:9000/myapi/receivedMessags/myUserId
Я получаю JSON этой формы,
[{"senderId":"myUSerId","receiverId":"mySenderId","mediaId":"22797361348"},{"senderId":"myUSerId","receiverId":"mySenderId","mediaId":"22797361348"},{"senderId":"myUSerId","receiverId":"mySenderId","mediaId":"22797361348"},{"senderId":"myUSerId","receiverId":"mySenderId","mediaId":"22797361348"}]
Который является совершенно действительными данными JSON.
Сейчас я пытаюсь использовать эти данные с помощью fetch-API. Это моя функция,
export function fetchMessages(url) {
return fetch(url, { method: "get",
headers: {
"Content-type": "text/plain"
},
credentials: 'include',
mode: 'no-cors'})
.then((response) => {
return response.json();//A
})
.then((data) => {
//console.log("data: ", data);
// let messages = [];
// for (let i = 0; i < data.length; i++) {
// let message = new Message(data[i].senderId, data[i].receiverId, data[i].mediaId);
// messages.push(message);
// }
console.log(data);
//return messages;
})
.catch((error)=> {
console.log("Request failed: ", error);
});
}
Этот метод не может получить доступ к данным. У меня не получается с ошибкой,
Request failed: SyntaxError: Unexpected end of input(…)
После долгих отладок я обнаружил, что в синтаксисе нет ничего плохого, и он терпит неудачу в строке A, где он пытается проанализировать ответ на json. Если я изменю эту строку на response.text()
синтаксическая ошибка исчезает, и я получаю пустым, что означает, что нет никаких данных. У меня вопрос, почему я не могу получить доступ к данным, когда я знаю, что мой серверный код работает нормально.
Если это поможет, вот код сервера,
@RequestMapping(value = "/receivedMessages/{userId}",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public ResponseEntity getReceivedMessages(@PathVariable("userId") String userId) {
List<Message> receivedList = null;
try {
receivedList = controller.getReceivedMessages(userId);
} catch (Exception e) {
}
return new ResponseEntity(receivedList, HttpStatus.OK);
}
Infact, я пытался POST на API, а также (который отлично работает в POSTMAN), но не удается с помощью моего клиентского интерфейса. Любая помощь высоко ценится.