Jeśli chodzi o pracę na Win to często był problem z wywołaniem na szybko API. W dokumentacjach często są przykłady, gdzie używa się programu cURL. W Win nie było domyślnie tego zainstalowanego(teraz już jest. Choć też zależy to od wersji), więc albo się instalowało albo trzeba było używać SoapUi albo innego narzędzia. Ja miałem podejście, że zainstalowałem sobie powłokę bash na Win10, gdzie było cURL. Ostatnio czytam książkę i autor okazało się, że korzysta z PowerShell-a do tego. Oto jak to zrobić.
Dokumentacja jest tutaj: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/invoke-restmethod?view=powershell-6
GET
GET akurat łatwo testować, bo można zawsze to robić w przeglądarce, chyba, że trzeba dołożyć nagłówek. Najprościej jest tak wywołać GET-a:
Invoke-RestMethod https://api.chucknorris.io/jokes/random -Method GET | ConvertTo-Json
Dodatek na końcu | ConvertTo-Json powoduje, że można to wyświetlić w jakiś normalnej formie czyli tak:
Dodawanie nagłówków wygląda tak:
Invoke-RestMethod https://api.chucknorris.io/jokes/random -Method GET -Headers (@{userId = 'UserIDValue'; token = 'TokenValue'}) | ConvertTo-Json
To nie jest jedyny sposób. PowerShell to mocne narzędzie i można praktycznie obiekt headers włożyć do zmiennej i korzystać z niego w zapytaniu. Ale mi chodzi o to aby szybko wywołać dane zapytania. Ten sposób z symbolami (, @ i { jest uniwersalny, więc można też tak definiować body to post-a.
POST
Najczęściej, jeśli chodzi o metodę POST to musimy zbudować body. Budowa body może tez być przeniesiona do zmiennej ale czasem wygodniej jest zrobić tak:
Invoke-RestMethod http://localhost:7000/api/reservation/2 -Method POST -Body (@{ "UserId"=1; "Date"="2019-02-02" } | ConvertTo-Json) -ContentType "application/json"
O czym warto pamiętać? Tworząc obiekty używając symboli (,@ i { należy w body je przekonwertować na JSON-a, używając składni | ConvertTo-Json
Do metody POST trzeba też dorzucić -ContentType co już możemy zrobić dość prosto.
PUT, DELETE, PATCH
Tutaj już nie ma żadnej różnicy. Wszystkie kombinacje z nagłówkami i body wymieniłem wyżej. Jak by mi się coś trafiło niezwykłego to napisze i będę aktualizował ten post.