Jak mogę wysłać wychodzące żądanie HTTP POST z danymi w pliku node.js?
node.js
http
post
httprequest
znak
źródło
źródło
node-fetch
implementacji natywnejfetch
metody JavaScript do wysyłania żądań HTTP.Odpowiedzi:
Oto przykład użycia node.js do wysłania żądania POST do interfejsu API Google Compiler:
Zaktualizowałem kod, aby pokazać, jak wysyłać dane z pliku, zamiast ciągu zakodowanego na stałe. W tym celu wykorzystuje
fs.readFile
komendę async , umieszczając rzeczywisty kod po udanym odczycie. Jeśli wystąpi błąd, jest on zgłaszany, a jeśli nie ma żadnych danych, proces kończy się wartością ujemną, wskazując na błąd.źródło
querystring.stringify()
nie obsługuje zagnieżdżonych obiektów , więc możesz użyćqs.stringify()
zamiast tego.Content-Length
to bajty i niekoniecznie długość łańcucha (UTF-16 itp.). UżywanieBuffer.byteLength(data)
zawsze będzie poprawne.querystring.stringify
powinien być twoim własnym obiektem danych, a nie śmieciami wyświetlanymi w tej odpowiedzi (co może być przydatne w przypadku obiektów opartych na plikach?).Jest to o wiele łatwiejsze, jeśli korzystasz z biblioteki żądań .
Oprócz zapewnienia ładnej składni sprawia, że żądania JSS są łatwe, obsługuje automatyczne podpisywanie (dla Twittera itp.), Może wykonywać formularze wieloczęściowe (np. Do przesyłania plików) i strumieniować.
Aby zainstalować żądanie, użyj polecenia
npm install request
źródło
Możesz użyć biblioteki żądań. https://www.npmjs.com/package/request
Aby opublikować dane JSON:
Aby opublikować dane XML:
źródło
Używam Restlera i Igły do celów produkcyjnych. Oba są znacznie potężniejsze niż natywny httprequest. Możliwe jest żądanie podstawowego uwierzytelnienia, specjalnego wpisu w nagłówku, a nawet przesyłania / pobierania plików.
Jeśli chodzi o operację post / get, są one również znacznie prostsze w użyciu niż surowe wywołania ajax przy użyciu httprequest.
źródło
Prosty i bez zależności. Wykorzystuje obietnicę, abyś mógł poczekać na wynik. Zwraca treść odpowiedzi i nie sprawdza kodu statusu odpowiedzi.
Stosowanie:
źródło
write
metodareq,write()
?Możesz także użyć Requestify , naprawdę fajnego i prostego klienta HTTP, który napisałem dla nodeJS +, który obsługuje buforowanie.
Po prostu wykonaj następujące czynności:
źródło
Aktualizacja 2020:
Bardzo lubię phin - ultralekki klient HTTP Node.js
Można go używać na dwa różne sposoby. Jedna z obietnicami (Async / Await), a druga z tradycyjnymi stylami wywołania zwrotnego.
Zainstaluj przez:
npm i phin
Prosto z README dzięki
await
:Styl bez reklam (oddzwanianie):
Począwszy od 2015 r. Istnieje obecnie wiele różnych bibliotek, które mogą to osiągnąć przy minimalnym kodowaniu. Wolę eleganckie i lekkie biblioteki do żądań HTTP, chyba że absolutnie potrzebujesz kontroli nad niskopoziomowymi rzeczami HTTP.
Jedną z takich bibliotek jest Unirest
Aby go zainstalować, użyj
npm
.$ npm install unirest
I na
Hello, World!
przykładzie, do którego wszyscy są przyzwyczajeni.Dodatkowo:
wiele osób sugeruje również użycie żądania [2]
Warto zauważyć, że za kulisami
Unirest
korzysta zrequest
biblioteki.Unirest zapewnia metody bezpośredniego dostępu do obiektu żądania.
Przykład:
źródło
źródło
Dostępnych jest wiele bibliotek typu open source, których można użyć do utworzenia żądania HTTP POST w węźle.
1. Axios (zalecane)
2. Igła
3. Wniosek
4. Natywny moduł HTTPS
Aby uzyskać szczegółowe informacje, sprawdź ten artykuł .
źródło
Jest to najprostszy sposób, w jaki wykonuję żądanie: używając modułu „request”.
Polecenie instalacji modułu „prośba”:
Przykładowy kod:
Możesz również użyć wbudowanego modułu „http” Node.js, aby wysłać zapytanie.
źródło
Podoba mi się prostota superagenta ( https://github.com/visionmedia/superagent ). Ten sam interfejs API w węźle i przeglądarce.
Istnieje również funkcja pobierania węzłów ( https://www.npmjs.com/package/node-fetch ), która ma interfejs API zgodny
fetch
z przeglądarkami - wymaga to jednak ręcznego kodowania ciągu zapytań, nie obsługuje automatycznie typów treści lub tak robi każdy inny superagent pracy.źródło
Jeśli szukasz żądań HTTP opartych na obietnicach, axios dobrze sobie radzi.
LUB
źródło
Aby
wysłać żądanie Rest / JSON Możemy po prostu użyć pakietu żądania i zapisać wartości, które musimy wysłać w zmiennej Json.
Najpierw zainstaluj wymagany pakiet w konsoli, wysyłając np. Żądanie instalacji npm - zapisz
źródło
Znalazłem film, który wyjaśnia, jak to osiągnąć: https://www.youtube.com/watch?v=nuw48-u3Yrg
Wykorzystuje domyślny moduł „http” wraz z modułami „querystring” i „stringbuilder”. Aplikacja pobiera dwie liczby (używając dwóch pól tekstowych) ze strony internetowej i po przesłaniu zwraca sumę tych dwóch (wraz z utrwaleniem wartości w polach tekstowych). To najlepszy przykład, jaki mogłem znaleźć gdziekolwiek indziej.
źródło
To moje rozwiązanie dla
POST
iGET
.O
Post
metodzie:Jeśli ciało jest obiektem JSON, ważne jest, aby dokonać deserializacji za pomocą
JSON.stringify
i ewentualnie odpowiednio ustawićContent-Lenght
nagłówek:przed napisaniem go do zapytania:
O obu
Get
iPost
metod:timeout
Może występować jakosocket
rozłączeniem, więc należy zarejestrować swój obsługi takiego:podczas gdy
request
moduł obsługi jestZdecydowanie sugeruję zarejestrowanie obu programów obsługi.
Ciało odpowiedzi jest podzielone na części, dlatego należy połączyć elementy w module
data
obsługi:Na będą zawierać całe ciało odpowiedzi:
end
body
Można bezpiecznie zawinąć za pomocą
try
... catchthe
JSON.parse`, ponieważ nie można być pewnym, że jest to dobrze sformatowany plik json i nie ma sposobu, aby być pewnym w momencie wykonywania żądania.Moduł:
SimpleAPI
Stosowanie:
źródło
Po wielu problemach podczas tworzenia narzędzia niskiego poziomu do obsługi postu i otrzymywania próśb o mój projekt, postanowiłem opublikować tutaj mój wysiłek. Znacznie poniżej linii akceptowanej odpowiedzi znajduje się fragment kodu służący do wysyłania żądań POST HTTP i https o wysyłanie danych JSON.
źródło
Lub możesz użyć tej biblioteki:
źródło
request
biblioteka jest przestarzała.Axios to oparty na obietnicach klient HTTP dla przeglądarki i Node.js. Axios ułatwia wysyłanie asynchronicznych żądań HTTP do punktów końcowych REST i wykonywanie operacji CRUD. Można go używać w zwykłym JavaScript lub w bibliotece takiej jak Vue lub React.
źródło
Publikowanie kolejnego przykładu axios żądania axios.post, który wykorzystuje dodatkowe opcje konfiguracji i niestandardowe nagłówki.
źródło
Za pomocą zależności żądania .
Proste rozwiązanie:
źródło
request
pochodzi?Request-Promise
Zapewnia odpowiedź opartą na obietnicach. Kody odpowiedzi HTTP inne niż 2xx spowodują odrzucenie obietnicy. Można to zastąpić, ustawiając opcje.simple = falseźródło