从React-Native使用formData调用api时得到422

问题描述 投票:0回答:2

API 需要以下内容:

“用户”作为哈希(甚至无法从邮递员那里得到它......) 要更新为字符串的参数(姓名、电子邮件和密码) 图片来自“react-native-image-picker”(我对此有回应)

准备上传上传:

    const handleUserUpdate = async () => {
        if (photo === null || photo === undefined) {
            return;
        }

        let avatar = photo.assets[0];
        let uri = avatar.uri?.replace('file://', '');

        // https://stackoverflow.com/questions/32441963/how-to-use-formdata-in-react-native
        let formData = new FormData();
        formData.append('user[avatar]', {
            uri: uri,
            name: avatar.fileName,
            type: avatar.type,
        });
        formData.append('user[name]', 'Foo');

        updateUserAvatar(formData)
            .then(async response => {
                await AsyncAlert('Success', 'Response code: ' + JSON.stringify(response));
            })
            .catch(error => {
                Alert.alert('Error', JSON.stringify(error));
            });
    };

实际上传:

    updateUserAvatar = async (avatar: FormData) => {
        try {
            await fetch(
                'https://staging.appcms.dk/api/cX8hvUC6GEKGgUuvzsBCNA/app-memberships/',
                {
                    body: JSON.stringify(avatar),
                    method: 'PATCH',
                    credentials: 'include',
                    headers: {
                        Accept: 'application/json',
                        'Content-Type': 'multipar/form-data',
                    },
                },
            )
                .then(async response => {
                    if (response.ok) {
                        let res = await response.json();
                        console.log(JSON.stringify(res));
                        return res;
                    } else {
                        throw new Error(
                            response.status + ', ' + response.statusText,
                        );
                    }
                })
                .catch(error => {
                    console.log(error);
                    throw error;
                });
        } catch (error) {
            return error;
        }
    };

我得到的唯一回复是 422。 我不知道如何将用户作为哈希添加到 formData 中。 或者标题可能有什么问题......

提前致谢!

我尝试模仿邮递员的 Patch 调用,但我遇到了与代码中相同的问题 - 我不知道如何将用户添加为哈希...

react-native hash fetch multipartform-data patch
2个回答
0
投票

原来 api 调用的文档不完整,这又意味着我的请求标头不完整......


0
投票

解决办法是什么?我也有同样的问题。

谢谢你

© www.soinside.com 2019 - 2024. All rights reserved.