简体   繁体   中英

Can't send patch request to React Native

The patch request is not sent, the server returns 422 code. The Postman patch works fine. Maybe I am not sending the request correctly.Here is my EditingPatientScreen code:

function EditingPatientScreen({route, navigation}) {

  const {item} = route.params;

  const [values, setValues] = useState({});

  const handleChange = (name, e) => setValues(a => ({
    ...a,
    [name]: e
  }));


  const onSumbit = (id) => {
    console.log(id)
    patient.put(id)
      .then(({ data }) => {
        navigation.navigate("HomeScreen");
        console.log(values)
      }).catch(e => {
      console.log(e);
    });
  };

  return (
    <>
      <View style={{ flex: 1, backgroundColor: `#ffffffff` }}>
        <View style={{ backgroundColor: `#ffffff` }}>
          <TextInput
            style={[styles.text_input]}
            label={"Имя и Фамилия"}
            onChangeText={ text =>handleChange("fullname", text)}
            value={values.fullname}
            autoFocus
          />
          <TextInput
            style={styles.text_input}
            label={" Номер телефона"}
            keyboardType="phone-pad"
            dataDetectorType={"phoneNumber"}
            onChangeText={ text =>handleChange( "phone", text)}
            value={values.phone}
            autoFocus
          />
          <View style={styles.viewButton}>
            <View style={styles.buttonContainer}>
              <TouchableOpacity style={styles.touchableOpacity} onPress={() => onSumbit(item._id)}>
                <Text style={styles.touchableOpacityText}><MaterialIcons name={"done"} size={17}/> Сохранить</Text>
              </TouchableOpacity>
            </View>
          </View>
        </View>
      </View>
    </>
  );
}

export default EditingPatientScreen;

Here is my code from patients.js. I think I did the right thing here

import axios from "axios";

export default {
  post: values => axios.post('http://localhost:5000/patients', values),
  show: id => axios.get('http://localhost:5000/patients/' + id),
  get: () => axios.get('http://localhost:5000/patients'),
  remove: id => axios.delete('http://localhost:5000/patients/ ' + id),
  put: id => axios.patch('http://localhost:5000/patients/ ' + id),
}

How to solve the problem?

There is an extra space on your URL, it should look like this:

put: id => axios.patch('http://localhost:5000/patients/' + id),

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM