我正在开发一个请求JSON API的应用程序(非常简单的应用程序)。让我生气的那段代码是:
fetch("http://xxx/api/v1/samples", {
method: "GET",
headers: {
'Authorization': 'Bearer ' + userToken
}
}).then((response) => {
if (response.ok) {
return response.json();
}
throw new Error('error');
}).then((samples) => {
console.log(samples);
this.setState({
data: samples,
error: samples.error || null,
loading: false,
refreshing: false
});
}).catch((error) => {
AlertIOS.alert("OOPS", error.message);
});
API返回:
{
"code": "4345",
"id": 3,
"comment": "Echantillon trouvé dans un étang",
"updated_at": {
"date": "2017-07-04 11:04:34.000000",
"timezone_type": 3,
"timezone": "Europe/Zurich"
},
"project_name": "Récolte de Lézards",
"thumbs": "http://xxx/storage-app-uploads-public-595-e01-893-595e01893c826572100952-8cf6abfd3440f538dfa95b1d581b7487.png",
"pictures": [
"http://xxx/storage-app-uploads-public-595-e01-893-595e01893c826572100952-8cf6abfd3440f538dfa95b1d581b7487.png"
]
}
我的问题 var"样本"是正确的(包含所有字段; id,代码,注释,...)期望所有url都是空字符串。
console.log(samples)
之前this.setState
的结果:
{
"code": "4345",
"id": 3,
"comment": "Echantillon trouvé dans un étang",
"updated_at": {
"date": "2017-07-04 11:04:34.000000",
"timezone_type": 3,
"timezone": "Europe/Zurich"
},
"project_name": "Récolte de Lézards",
"thumbs": "",
"pictures": [
""
]
}
无法找出原因。
有什么想法吗?非常感谢你。
答案 0 :(得分:0)
samples
是一个JavaScript普通对象。如果预期结果是在传递给Array
的对象的"data"
属性中定义.setState()
,请在{{1}设置samples.pictures
和.concat()
samples.thumbs
} property。
从"data"
链接到throw
电话中删除.then()
,以避免意外结果。
fetch()
答案 1 :(得分:0)
谢谢@YaSH,你是对的。使用HTTPS网址时,字符串不为空...但为什么......我在文档中没有找到任何提及的内容......
@ guest271314:这等于调用fetch的组件。