Создайте данные формы с дубликатами ключей в теле почтового запроса клиента Nodejs - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь сделать почтовый запрос, тело которого состоит из данных формы. Но спецификация API остальных говорит, что данные формы должны выглядеть следующим образом:

names [] = название компании 1 & names [] = название компании 2

Я пытался

    form: {'names[]': "google" ,'names[]': "kraft",  'fields[]': "Country", 
        'fields[]':"ISIN"}

Но сервер получает только первые names[] и fields[]. Вторые обрезаются.

Сервер: Опубликовать данные: {"names" => ["kraft"], "fields" => ["ISIN"]}

Затем я попытался добавить массив в качестве значения:

form: {'names[]': ["google", "kraft"], 'fields[]': ["Country","ISIN"] }

Сервер: Опубликовать данные: {"names" => [{"0" => "google", "1" =>"kraft"}], "fields" => [{"0" => "Country", "1" => "ISIN"}]}

Глядя на запрос сервера, вижучто он принимает тело в следующем формате:

BODY: names[]=google&names[]=kraft&fields[]=ISIN&fields[]=Country

Но я не могу сконструировать такую ​​форму на стороне моего узла-клиента.

Я использую эту библиотеку: https://www.npmjs.com/package/request

********* РЕДАКТИРОВАТЬ ********

Этот на самом деле проснулся: form: "names[]=google&names[]=kraft&fields[]=Country&fields[]=ISIN"

Теперь вопрос в том, как сформировать эту строку, используя https://github.com/form-data/form-data

Никакое приложение не работает, я пытался.

1 Ответ

0 голосов
/ 10 октября 2019

Рекомендуется, чтобы ключи были уникальными и не имели скобок в именах. В вашем случае имена [] и поля [] повторяются

const form = {
    form: {
        names: ['google', 'kraft'],
        fields: ['Country', 'ISIN']
    }
};

request.post('http://yourwebsite.com', form);

РЕДАКТИРОВАТЬ

names[]=google&names[]=kraft&fields[]=ISIN&fields[]=Country 

Может быть допустимым, но в зависимости от структуры / языка, толькоодна запись будет принята во внимание (первая или последняя). Так что это эквивалентно

names[]=google&fields[]=ISIN // considering first are chosen

Также, как вы можете видеть

Сервер: Опубликовать данные: {"names" => ["kraft"], "fields" =>["ISIN"]}

Скобки были отфильтрованы, так что это опять будет то же самое

names=google&fields=ISIN // considering first are chosen
...