Home > Software design >  Javascript fetch method failing
Javascript fetch method failing

Time:02-05

So I am trying to call an api using the javascript fetch method. But it keeps failing.

I am trying to call this api this way:

const addressReq = await fetch(`https://vapi.verifyme.ng/v1/verifications/addresses`, {
                    headers:{
                        'Authorization':`Bearer ${AllKeys.verifyNINKey}`,
                        'Content-Type': 'application/json'
                    },
                    method:'POST',
                    body:{
                        'reference':`${id}`,
                        'city':`${city}`,
                        'state':`${state}`,
                        'landmark':`${city} ${estate && estate   ' estate'}`,
                        'lga': `${lga}`,
                        'street':`${street_number} ${street_name} ${estate} ${city}`,
                        "applicant.firstname" : `${displayName}`,
                        "applicant.lastname" : `${lastName}`,
                        "applicant.dob" : `${rows.birth_info}`,
                        "applicant.phone" : `${number}`,
                        "applicant.idType" : 'KYC',
                        "applicant.idNumber" : `${number}`,
                        // "applicant.firstname" : `${displayName}`,
                        // "applicant": {
                        //     'firstname':`${displayName}`,
                        //     'lastname':`${lastName}`,
                        //     'dob':`${rows.birth_info}`,
                        //     'phone':`${number}`,
                        //     'idType':'KYC',
                        //     'idNumber':`${number}`,
                        // }
                    }
                }).then(async(res) => {
                    console.log(await res.json())
                    dispatch({ type:'UPDATE_STATUS',payload: {status:'guarantor'} })
                }).catch(err => console.log(err))

But it doesn't work. I keep getting a 400 error

Object {
  "error": "Bad Request",
  "message": Array [
    "applicant should not be null or undefined",
    "state should not be empty",
    "state must be a string",
    "street should not be empty",
    "street must be a string",
    "lga should not be empty",
    "lga must be a string",
  ],
  "statusCode": 400,
}

But when I use postman it works.

I have also added a webhook on pipedream and I do not receive that either to prove it doesn't work.

I have tried everything possible but no positive feedback. Is there any thing I'm doing wrong?

CodePudding user response:

Thanks to @Barmar all I needed to do was add JSON.stringify()

Outcome:

const addressReq = fetch(`https://vapi.verifyme.ng/v1/verifications/addresses`, {
                    headers:{
                        'Authorization':`Bearer ${AllKeys.verifyNINKey}`,
                        'Content-Type': 'application/json'
                    },
                    method:'POST',
                    body:JSON.stringify({
                        'reference':`${id}`,
                        'city':`${city}`,
                        'state':`${state}`,
                        'landmark':`${city} ${estate && estate   ' estate'}`,
                        'lga': `${lga}`,
                        'street':`${street_number} ${street_name} ${estate} ${city}`,
                        "applicant.firstname" : `${displayName}`,
                        "applicant.lastname" : `${lastName}`,
                        "applicant.dob" : `${rows.birth_info}`,
                        "applicant.phone" : `${number}`,
                        "applicant.idType" : 'KYC',
                        "applicant.idNumber" : `${number}`,
                        // "applicant.firstname" : `${displayName}`,
                        // "applicant": {
                        //     'firstname':`${displayName}`,
                        //     'lastname':`${lastName}`,
                        //     'dob':`${rows.birth_info}`,
                        //     'phone':`${number}`,
                        //     'idType':'KYC',
                        //     'idNumber':`${number}`,
                        // }
                    })
                }).then((res) => {
                    console.log(res.json())
                    dispatch({ type:'UPDATE_STATUS',payload: {status:'guarantor'} })
                }).catch(err => console.log(err))

CodePudding user response:

You don't have to use asynch and await here, removed them, try again, should work

const addressReq = fetch(`https://vapi.verifyme.ng/v1/verifications/addresses`, {
                    headers:{
                        'Authorization':`Bearer ${AllKeys.verifyNINKey}`,
                        'Content-Type': 'application/json'
                    },
                    method:'POST',
                    body:{
                        'reference':`${id}`,
                        'city':`${city}`,
                        'state':`${state}`,
                        'landmark':`${city} ${estate && estate   ' estate'}`,
                        'lga': `${lga}`,
                        'street':`${street_number} ${street_name} ${estate} ${city}`,
                        "applicant.firstname" : `${displayName}`,
                        "applicant.lastname" : `${lastName}`,
                        "applicant.dob" : `${rows.birth_info}`,
                        "applicant.phone" : `${number}`,
                        "applicant.idType" : 'KYC',
                        "applicant.idNumber" : `${number}`,
                        // "applicant.firstname" : `${displayName}`,
                        // "applicant": {
                        //     'firstname':`${displayName}`,
                        //     'lastname':`${lastName}`,
                        //     'dob':`${rows.birth_info}`,
                        //     'phone':`${number}`,
                        //     'idType':'KYC',
                        //     'idNumber':`${number}`,
                        // }
                    }
                }).then((res) => {
                    console.log(res.json())
                    dispatch({ type:'UPDATE_STATUS',payload: {status:'guarantor'} })
                }).catch(err => console.log(err))
  • Related