API для получения JSON через POST получает тип, отличный от отправленного - PullRequest
2 голосов
/ 04 мая 2019

Я пишу API, который получает JSON в NODE.JS.Для отправки данных используется метод POST.

Для упрощения управления запросами я использую lib Express и BodyParser для интерпретации тела запросов POST.

Я группирую информацию вjavascript объект, подобный этому:

const data = {
    "plan": "312409959F9FDDE444959F9C950201D7",
    "sender": {
        "name": $("[name=pname]").val(),
        "email": $("[name=pemail]").val(),
        "hash": credentials.hash,
        "phone": {
            "areaCode": $("[name=pphone]").val().substring(0, 2),
            "number": $("[name=pphone]").val().substring(2, 11)
        },
        "address": {
            "street": $("[name=paddress]").val(),
            "number": $("[name=pnumber]").val(),
            "complement": $("[name=pcomplement]").val(),
            "district": $("[name=pbairro]").val(),
            "city": $("[name=pcity]").val(),
            "state": $("[name=puf]").val(),
            "country": "BRA",
            "postalCode": $("[name=pcep]").val()
        },
        "documents": [{
            "type": "CPF",
            "value": $("[name=pcpf]").val()
        }]
    },
    "paymentMethod": {
        "type": "CREDITCARD",
        "creditCard": {
            "token": credentials.token,
            "holder": {
                "name": $("[name=pownername]").val(),
                "birthDate": $("[name=pbirthday]").val().split('-').reverse().join('/'),
                "documents": [{
                    "type": "CPF",
                    "value": $("[name=pcpf2]").val()
                }],
                "phone": {
                    "areaCode": $("[name=pphone2]").val().substring(0, 2),
                    "number": $("[name=pphone2]").val().substring(2, 11)
                }
            },
        }
    }

}

Запрос отправляется следующим образом:

$.post('/adherence', data, function (msg) {
    console.log(msg)
})

И квитанция на моем бэкэнде выглядит так:

app.post('/adherence', (req, res) => {
    try {
        console.log(req.body);
        res.send("OK");
    } catch (e) {
        console.log(e);
        res.send(e);
    }
});

Нов req.body я получаю следующее:

{ plan: '312409959F9FDDE444959F9C950201D7',
 'sender[name]': 'FRancisco',
  'sender[email]': 'falisson.sv@sandbox.pagseguro.com.br',
  'sender[hash]': 'ceedf0fd2ffd35f4054104d305088e19e8ca9333bbf70be10bd2ea6f94af226a',
  'sender[phone][areaCode]': '63',
  'sender[phone][number]': '991047876',
  'sender[address][street]': '1105 sul qi 3 al 3 lt 1',
  'sender[address][number]': '1',
  'sender[address][complement]': '',
  'sender[address][district]': 'centro',
  'sender[address][city]': 'palmas',
  'sender[address][state]': 'TO',
  'sender[address][country]': 'BRA',
  'sender[address][postalCode]': 'CEP',
  'sender[documents][0][type]': 'CPF',
  'sender[documents][0][value]': 'CPF',
  'paymentMethod[type]': 'CREDITCARD',
  'paymentMethod[creditCard][token]': 'b2f303ba63964404b6c466323deb9078',
  'paymentMethod[creditCard][holder][name]': 'LUCINEIA',
  'paymentMethod[creditCard][holder][birthDate]': '11/01/1990',
  'paymentMethod[creditCard][holder][documents][0][type]': 'CPF',
  'paymentMethod[creditCard][holder][documents][0][value]': 'CPF',
  'paymentMethod[creditCard][holder][phone][areaCode]': '63',
  'paymentMethod[creditCard][holder][phone][number]': '991047876' }

По-моему, все нормально, и я получил JSON в отправленном формате.Что не так с моим кодом?

1 Ответ

1 голос
/ 04 мая 2019

Попробуйте отправить запрос так:

$.ajax({
    url: '/adherence',
    type: 'POST',
    data: JSON.stringify(data),
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: function (msg) {
        console.log(msg)
    })
});
...