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—
curl
httprequest
postman
Marin Bînzari
źródło
źródło
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/event
w żądaniu curl, nie został zaimportowany lub może zostać pominięty przez Listonosza. Masz jakiś pomysł, jak to rozwiązać?źródło
1) Umieść
https://api-server.com/API/index.php/member/signin
w polu wprowadzania adresu URL i wybierzPOST
z listy rozwijanej2) W zakładce Nagłówki wprowadź:
Content-Type: image / jpeg
Content-Transfer-Encoding: binarny
3) Na karcie Treść wybierz
raw
przycisk 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-data
przycisk radiowy i napisz:key = name Value = userfile Wybierz
Text
key = filename WybierzFile
i prześlij swój profil.jpgźródło
Wypróbowałem podejście wspomniane przez Onkaara Singha,
Ale problem polega na tym, że nie zadziałał on dla Apisa, który wymaga autoryzacji.
To była moja prośba o curl:
Po zaimportowaniu treści zostały poprawnie zaimportowane, zaimportowano również nagłówki i adres URL. Tylko klucz interfejsu API 9f4d7f5445e7, który jest
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
9f4d7f5445e7
w tym przypadku) i wykonać kodowanie Base64. Po zakodowaniu zwróci wartośćOWY0ZDdmNTQ0NWU3
. Następnie dodaj nowy nagłówek, nazwęAuthorization
klucza i wartość kluczaBasic 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!!!
źródło
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.
źródło
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)źródło