Я использую API через React-Native
, и в ответ JSON включаются строки типа данных:
{"volumeInfo": Object {
"allowAnonLogging": false,
"authors": Array [
"Tim Mathers",
],
"canonicalVolumeLink": "https://market.android.com/details?id=book-ZzOPDwAAQBAJ",
"categories": Array [
"Sports & Recreation",
]}
Обратите внимание на строки типа "Object" и "Array"в ответ.
Когда я curl
точно такой же конечной точки из моего CLI, я получаю правильно отформатированный JSON как:
{"volumeInfo": {
"title": "Baseball",
"subtitle": "America's Diamond Mind, 1919-1941",
"authors": [
"Richard C. Crepeau"
],
"publisher": "U of Nebraska Press",
"publishedDate": "2000"}
Данные из curl
не только приходятобратно в правильном формате, но и в совершенно ином порядке, чем мое заявление.Это заставляет меня поверить, что моя реализация является причиной.См. Код ниже
Действие
export function searchBooks(book)
{
const url = `${BASE_URL}q=${book}&filter=free-ebooks&key=${API_KEY}`;
return dispatch => {
dispatch(getData());
fetch(url)
.then(blob => blob.json())
.then(data => {
console.log(data)
dispatch(getDataSuccess(data))
})
.catch(e => {
console.log(e);
dispatch(getDataFailure(e.message))
});
}
}
Редуктор
const initialState = {
payload:[],
fetching: false,
error: false
}
export default function(state=initialState, action){
switch (action.type){
case FETCHING_DATA: return {payload:[], fetching: true, ...state}
case FETCH_SUCCESS: return {payload:[action, ...state]}
case ERROR: return {payload:[], error: true, ...state}
}
return state;
}
Спасибо за любые разъяснения относительно того, почему данныетипы включены в мой JSON, и как моя реализация может быть причиной.