Имитация определенного CURL в PostMan

179

Я использую Postman для проверки некоторых запросов Curl к серверу API. Разработчики API дали нам команду curl, но я не могу ее отправить из почтальона. Как сделать такой запрос от Почтальона?

curl -X POST "https://api-server.com/API/index.php/member/signin" -d "{"description":"","phone":"","lastname":"","app_version":"2.6.2","firstname":"","password":"my_pass","city":"","apikey":"213","lang":"fr","platform":"1","email":"email@example.com","pseudo":"example"}"

--0xKhTmLbOuNdArY
Content-Disposition: form-data; name="userfile"; filename="profil.jpg"
Content-Type: image/jpeg
Content-Transfer-Encoding: binary

<ffd8ffe0 00104a46 49460001 01010048 ... a00fffd9>

—0xKhTmLbOuNdArY—
Марин Бынзари
источник

Ответы:

482

Более простой подход:

  1. Откройте POSTMAN
  2. Щелкните вкладку «Импорт» в верхнем левом углу.
  3. Выберите опцию Raw Text и вставьте свою команду cURL.
  4. Нажмите «Импорт», и у вас будет команда в вашем конструкторе Postman!
  5. Щелкните Отправить, чтобы опубликовать команду

Надеюсь это поможет!

Онкаар Сингх
источник
5
Я никогда не знал, что ты сможешь сделать это, пока не увидел этот пост. Благодарность!
austinthedeveloper
4
Это именно то, что я хотел. Благодарность!
Джошуа Дэнс
3
Я попробовал, и это сработало частично. Это мой запрос curl: curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d ' {"customer_id":"812122", "event":"add_to_cart", "email": "abc@def.com", }' -u 9f4d7f5445e7: https://api.myapp.com/api/event после импорта тело было импортировано правильно, заголовки и URL также были импортированы. Только ключ api 9f4d7f5445e7, который находится -u 9f4d7f5445e7: https://api.myapp.com/api/v1/eventв запросе curl, не был импортирован или, возможно, почтальон пропустил его. Есть идеи, как это решить?
Rito
1
Я понял, что импортировать curl cmd от myselft. Но мне потребовалось время, чтобы узнать, где находится страница с моим импортированным завитком, похоже, при импорте файла / cmd ничего не происходит. Затем вам нужно нажать кнопку «Код» в правом верхнем углу (под кнопкой сохранения). Тогда вы увидите, загружен ваш локон или нет.
zhihong 03
Этот подход не использовал учетные данные, которые я закодировал в нем, поэтому пришлось добавить их вручную с помощью Auth> Basic Auth внутри фактического запроса с помощью мыши и раскрывающихся списков. Я думаю, стоит упомянуть, поскольку поведение программного обеспечения таково, что оно, похоже, приняло и использовало кредиты: все, что вы получаете, это «пожалуйста, предоставьте действительные учетные данные», а не «пожалуйста, предоставьте некоторые учетные данные».
olisteadman
13
In addition to the answer
1. Open POSTMAN
2. Click on "import" tab on the upper left side.
3. Select the Raw Text option and paste your cURL command.
4. Hit import and you will have the command in your Postman builder!
5. If -u admin:admin are not imported, just go to the Authorization 
   tab, select Basic Auth -> enter the user name eg admin and password eg admin.
This will automatically generate Authorization header based on Base64 encoder
электрический
источник
8

1) Поместите https://api-server.com/API/index.php/member/signinв поле ввода URL-адреса и выберите POSTиз раскрывающегося списка

2) На вкладке Заголовки введите:

Тип содержимого: изображение / JPEG

Content-Transfer-Encoding: двоичный

3) На вкладке Body выберите rawпереключатель и напишите:

{"description":"","phone":"","lastname":"","app_version":"2.6.2","firstname":"","password":"my_pass","city":"","apikey":"213","lang":"fr","platform":"1","email":"email@example.com","pseudo":"example"}

выберите form-dataпереключатель и напишите:

key = name Value = userfile Выберите Text key = filename Выберите Fileи загрузите ваш profil.jpg

hello_harry
источник
7

Я пробовал подход, упомянутый Онкааром Сингхом,

  1. Откройте POSTMAN
  2. Щелкните вкладку «Импорт» в верхнем левом углу.
  3. Выберите опцию Raw Text и вставьте свою команду cURL.
  4. Нажмите «Импорт», и у вас будет команда в вашем конструкторе Postman!

Но проблема в том, что это не сработало для Apis, который требует авторизации.

Это был мой запрос на завиток:

curl -v -H "Accept: application/json" -H "Content-type:
application/json" -X POST -d ' 
{"customer_id":"812122", "event":"add_to_cart", "email": "abc@def.com", }' 
-u 9f4d7f5445e7: https://api.myapp.com/api/event

После импорта тело было импортировано правильно, заголовки и URL-адрес также были импортированы. Только ключ api 9f4d7f5445e7, который

-u 9f4d7f5445e7: https://api.myapp.com/api/v1/event 

в запросе curl не импортировал.

Я решил, что -u в основном используется для авторизации. Поэтому при использовании его в Postman вы должны взять ключ API (который 9f4d7f5445e7в данном случае есть) и выполнить кодирование Base64. После кодирования он вернет значение OWY0ZDdmNTQ0NWU3. Затем добавьте новый заголовок, имя ключа будет Authorizationи значение ключа Basic OWY0ZDdmNTQ0NWU3. После внесения этих изменений запрос работал у меня.

Доступны онлайн-кодеры Base64, я использовал http://www.url-encode-decode.com/base64-encode-decode/

Надеюсь, это поможет!!!

Рито
источник
на вкладке авторизации почтальона просто выберите Basic Auth, и он сгенерирует заголовок Base64
electricbah
3

иногда, когда вы копируете cURL, он содержит --compressed. Удалите его при импорте -> Вставить необработанный текст -> нажмите на импорт. Это также решит проблему, если вы получаете синтаксическую ошибку в почтальоне при импорте любого cURL.

Обычно такое случается, когда люди копируют cURL из любых прокси-инструментов, таких как Charles.

Анкит Гупта
источник
0

Как упоминалось в нескольких ответах выше, вы можете напрямую импортировать cURL в POSTMAN. Но если URL-адрес авторизован (или не работает по какой-либо причине), я предлагаю вам вручную добавить все точки данных в виде JSON в тело почтальона. возьмите URL-адрес API из cURL.

для части авторизации - просто добавьте ключ авторизации и строку в кодировке base 64 в качестве значения.

пример:

curl -u rzp_test_26ccbdbfe0e84b:69b2e24411e384f91213f22a \ https://api.razorpay.com/v1/orders -X POST \ --data "amount=50000" \ --data "currency=INR" \ --data "receipt=Receipt #20" \ --data "payment_capture=1" https://api.razorpay.com/v1/orders

{ "amount": "5000", "currency": "INR", "receipt": "Receipt #20", "payment_capture": "1" }

Заголовки: Authorization:Basic cnpwX3Rlc3RfWEk5QW5TU0N3RlhjZ0Y6dURjVThLZ3JiQVVnZ3JNS***U056V25J где "cnpwX3Rlc3RfWEk5QW5TU0N3RlhjZ0Y6dURjVThLZ3JiQVVnZ3JNS *** U056V25J" является закодированной формой "rzp_test_26ccbdbfe0e84b: 69b2e24411e384f91213f22a" `

небольшой совет: для кодирования вы можете легко перейти на свою хром-консоль (щелкнуть правой кнопкой мыши => проверить) и ввести: btoa("string you want to encode")(или использовать базовую авторизацию почтальона)

Шехар
источник
0

Согласно приведенным выше ответам, он работает хорошо.

Если мы вставим curl-запросы с данными авторизации в import, Postman установит все заголовки автоматически. Мы просто передаем данные строки JSON в теле запроса, если это необходимо, или загружаем изображения через данные формы в теле.

Это всего лишь пример. Ваш API должен быть другим (если ваш API позволяет)

curl -X POST 'https://verifyUser.abc.com/api/v1/verification' \
    -H 'secret: secret' \
    -H 'email: user@gmail.com' \
    -H 'accept: application/json, text/plain, */*' \
    -H 'authorizationtoken: bearer' \
    -F 'referenceFilePath= Add file path' \
    --compressed
акшай_сушир
источник