Jak stworzyć rest api ze strony w laravelu do aplikacji w python?

0

Witam!

Mam taki problem, otóż potrzebuję pobrać ze swojej strony internetowej w laravelu id aktualnie zalogowanego użytkownika na stronie, a następnie przesłać to id do aplikacji w pythonie. No i tutaj pojawia się pytanie, jak stworzyć takie coś? Czytałem o rest api, ale nie mogę się w tym połapać, może ktoś wie jak to działa i napisze mi wskazówki jak działa to krok po kroku to będę bardzo wdzięczny. Jeżeli temat jest w złym dziale to proszę o przeniesienie. Z góry dziękuję za pomoc i wszelkie rady.

1

Czego dokładnie nie rozumiesz? Rest api to w skrócie zwracanie jsona z danymi zamiast htmla, i wtedy rożne aplikacji np front w angularze sobie to dekodują i robią z nimi co potrzebują.

A stworzenie prostego resta w laraverze jest banalne, zamiast zwracać widok z kontrolera, zwróć po prostu pobrany obiekt z bazy i zobacz co się stanie.

0

Dokładnie nie rozumiem tego po której stronie bym musiał zrobić rest api. Ale z tego co wnioskuję, to jeżeli potrzebuję dane pobrać ze strony internetowej, to muszę stworzyć rest api po stronie laravela, on mi utworzy plik JSON a później python go sobie odkoduje? Właśnie chyba tego nie mogę trochę pojąć bo dla mnie to taka nowość. I mam rozumieć że ten JSON będzie zawierał informację o aktualnie zalogowanym użytkowniku, a później jak już będę mial ten plik, to będę mógł z niego wyciągnąć dane na temat tego użytkownika, i korzystać w nich w aplikacji, bo potrzebuję to ID głównie do tego żeby aplikacja mogła zapisywać dane do bazy do konkretnego użytkownika.

0

json to nie plik, tyko zwykły tekst, który może być np zserialozowaną tablicą, obiektem, wszystkim razem. Wystawiasz tam to co chcesz, nic cie nie ogranicza.

0

Teraz doczytałem, skoro apka na pythonie ma pobierać te dane to ta apka musi się zalogować do twojego api.

0

Tutaj sobie obejrzyj:

0

Zapoznałem się z tematem, filmiki przydane ciekawie i treściwie zrobione, po pierwszym filmiku zauważyłem że rzecz która mnie interesuje to Client-Server, aplikacja w pythonie jest desktopowa, i teraz jedyne pytanie, jak pobrać w pythonie dane z rest api, bo rozumiem że rest api przesyła przez adres URL wszystkie potrzebne mi dane czyli w moim przypadku ID użytkownika zalogowanego, ale teraz muszę jakoś to wrzucić do pythona :)

0

Takie pytanie, jeżeli stworzyłem takie coś w api.php

Route::get('userid', 'UserController@userid');

I w kontrolerze wpisałem takie coś:

public function userid(){
    $n = Auth::user(1);

    $result = ['id' => "$n"];

$response = \Response::json($result)->setStatusCode(200, 'Success');

return $response;
  }

Dlaczego api.php blokuje otrzymywanie wartości ze zmiennej $n, służy ona pobieraniu ID zalogowanego użytkownika, ale jak na razie to pod żadną postacią nie działa, wie ktoś może dlaczego? Oczywiście kod pisany w laravelu.

0

teraz jedyne pytanie, jak pobrać w pythonie dane z rest api, bo rozumiem że rest api przesyła przez adres URL wszystkie potrzebne mi dane czyli w moim przypadku ID użytkownika zalogowanego, ale teraz muszę jakoś to wrzucić do pythona :)

  1. Tworzysz restowy interfejs na stworzonym do tego celu URLu gdzie wystawiasz te IDki użytkowników
  2. W pythonie wykorzystując bibliotekę requtests bądź inna podobną robisz GET na tym URL
  3. Python ma specjalny moduł w bibliotece standardowej robisz import json
  4. Serializujesz obiekt jsona z URL do obiektu słownika w pythonie
  5. Robisz co chcesz dalej z tym robić.
0

Dlatego, że nie ma takiej metody jak Auth::user($value), ta metoda nie przyjmuje, żadnego parametru i zwraca zawsze zalogowanego usera.

0

Znaczy rozumiem, tylko dlaczego akurat w api.php to nie działa, a jak korzystam z tego w web.php gdzie mam routing strony to działa, api.php to oddzielna część strony mam rozumieć, i mam w inny sposób dostać się do użytkownika?

0

bo się nie zalogowałeś

0

W sensie, mam zrobić osobne logowanie w api.php dobrze rozumiem? i dopiero wtedy będę mół korzystać auth po stronie api?

0

dokładnie tak, musisz się zalogować clientem do tej apki i działać tak jak przeglądarka czyli przesyłać mu cookie z sesją ewentualnie autoryzować się tokenem np jwtoken

0

Niestety, po wielu próbach nie wiem czemu, próbując na kilka sposobów problem zawsze jest ten sam

The GET method is not supported for this route. Supported methods: POST.

Nie wiem z czym jest on związany, ale przez niego ani rejestracja ani logowanie nie działa, chociaż robiłem wszystko zgodnie z poleceniami na internecie, z metodą passport jak i również JWT jeżeli się nie myle.

1 użytkowników online, w tym zalogowanych: 0, gości: 1