Symuluj określony CURL w PostMan

153

Używam programu Postman do testowania niektórych żądań Curl do serwera API. Programiści API przekazali nam polecenie curl, ale nie mogę go wysłać z Postman. Jak złożyć taką prośbę u Listonosza?

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 protected]","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—
Marin Bînzari
źródło

Odpowiedzi:

422

Prostszym podejściem byłoby:

  1. Otwórz POSTMAN
  2. Kliknij kartę „Importuj” w lewym górnym rogu.
  3. Wybierz opcję Tekst surowy i wklej polecenie cURL.
  4. Hit import, a otrzymasz polecenie w swoim kreatorze Listonosza!
  5. Kliknij Wyślij, aby opublikować polecenie

Mam nadzieję że to pomoże!

Onkaar Singh
źródło
4
Nie wiedziałem, że możesz to zrobić, dopóki nie zobaczyłem tego postu. Dzięki!
austinthedeveloper
3
Właśnie tego chciałem. Dzięki!
Joshua Dance
3
Wypróbowałem to i częściowo zadziałało. To jest moja prośba o curl: curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d ' {"customer_id":"812122", "event":"add_to_cart", "email": "[email protected]", }' -u 9f4d7f5445e7: https://api.myapp.com/api/event Po zaimportowaniu treści zostały poprawnie zaimportowane, nagłówki i adres URL również zostały zaimportowane. Tylko klucz interfejsu API 9f4d7f5445e7, który znajduje się -u 9f4d7f5445e7: https://api.myapp.com/api/v1/eventw żądaniu curl, nie został zaimportowany lub może zostać pominięty przez Listonosza. Masz jakiś pomysł, jak to rozwiązać?
Rito
1
Sam sobie zaimportowałem curl cmd. Ale zajęło mi trochę czasu, aby dowiedzieć się, gdzie jest strona z moim importowanym curl, wygląda na to, że nic się nie dzieje podczas importowania pliku / cmd. Następnie kliknij przycisk „kod” w prawym górnym rogu (pod przyciskiem Zapisz). Wtedy zobaczysz, czy twój lok jest załadowany, czy nie.
zhihong
To podejście nie wykorzystywało danych uwierzytelniających, które w nim zakodowałem, więc musiałem dodać je ręcznie za pomocą Auth> Basic Auth, wewnątrz rzeczywistego żądania za pomocą myszy i menu rozwijanych. Myślę, że warto wspomnieć, ponieważ zachowanie oprogramowania jest takie, że wydaje się, że zaakceptowało i wykorzystało dane uwierzytelniające: wszystko, co otrzymujesz, to „podaj prawidłowe dane uwierzytelniające”, a nie „podaj dane uwierzytelniające”.
olisteadman
12
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
electricbah
źródło
5

1) Umieść https://api-server.com/API/index.php/member/signinw polu wprowadzania adresu URL i wybierz POSTz listy rozwijanej

2) W zakładce Nagłówki wprowadź:

Content-Type: image / jpeg

Content-Transfer-Encoding: binarny

3) Na karcie Treść wybierz rawprzycisk opcji i napisz:

{"description":"","phone":"","lastname":"","app_version":"2.6.2","firstname":"","password":"my_pass","city":"","apikey":"213","lang":"fr","platform":"1","email":"[email protected]","pseudo":"example"}

wybierz form-dataprzycisk radiowy i napisz:

key = name Value = userfile Wybierz Text key = filename Wybierz Filei prześlij swój profil.jpg

hello_harry
źródło
5

Wypróbowałem podejście wspomniane przez Onkaara Singha,

  1. Otwórz POSTMAN
  2. Kliknij kartę „Importuj” w lewym górnym rogu.
  3. Wybierz opcję Tekst nieprzetworzony i wklej polecenie cURL.
  4. Hit import, a otrzymasz polecenie w swoim kreatorze Listonosza!

Ale problem polega na tym, że nie zadziałał on dla Apisa, który wymaga autoryzacji.

To była moja prośba o curl:

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

Po zaimportowaniu treści zostały poprawnie zaimportowane, zaimportowano również nagłówki i adres URL. Tylko klucz interfejsu API 9f4d7f5445e7, który jest

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

w żądaniu curl nie zaimportowano.

Sposób, w jaki to rozwiązałem, jest taki, że -u jest zasadniczo używane do autoryzacji. Więc używając go w Postman, musisz wziąć klucz API (tak jest 9f4d7f5445e7w tym przypadku) i wykonać kodowanie Base64. Po zakodowaniu zwróci wartość OWY0ZDdmNTQ0NWU3. Następnie dodaj nowy nagłówek, nazwę Authorizationklucza i wartość klucza Basic OWY0ZDdmNTQ0NWU3. Po wprowadzeniu tych zmian prośba zadziałała.

Dostępne są online kodery Base64, ten, którego użyłem, to http://www.url-encode-decode.com/base64-encode-decode/

Mam nadzieję, że to pomoże!!!

Rito
źródło
na karcie autoryzacji listonosza po prostu wybierz Basic Auth, a wygeneruje nagłówek Base64
electricbah
2

czasami, gdy kopiujesz cURL, zawiera on --compressed. Usuń go podczas importu-> Wklej surowy tekst -> kliknij import. Rozwiąże to również problem, jeśli podczas importowania cURL pojawi się błąd składni w listonoszu.

Zwykle, gdy ludzie kopiują cURL z dowolnego narzędzia proxy, takiego jak Charles, to się zdarza.

Ankit Gupta
źródło
0

Jak wspomniano w wielu odpowiedziach powyżej, możesz bezpośrednio zaimportować cURL do POSTMAN. Ale jeśli adres URL jest autoryzowany (lub z jakiegoś powodu nie działa), sugeruję, że możesz ręcznie dodać wszystkie punkty danych jako JSON w treści listonosza. weź URL interfejsu API z cURL.

dla części autoryzacji - po prostu dodaj klucz autoryzacji i ciąg zakodowany w oparciu o 64 jako wartość.

przykład:

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" }

Nagłówki: Authorization:Basic cnpwX3Rlc3RfWEk5QW5TU0N3RlhjZ0Y6dURjVThLZ3JiQVVnZ3JNS***U056V25J gdzie „cnpwX3Rlc3RfWEk5QW5TU0N3RlhjZ0Y6dURjVThLZ3JiQVVnZ3JNS *** U056V25J” to zakodowana forma „rzp_test_26ccbdbfe0e84b: 69b2e24411e”

mała wskazówka: aby zakodować, możesz łatwo przejść do konsoli chrome (kliknij prawym przyciskiem myszy => sprawdź) i wpisać: btoa("string you want to encode")(lub użyj podstawowej autoryzacji listonosza)

Shekhar
źródło