• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

użycie technologi REST w moim kodzie PHP

42 Warsaw Coding Academy
0 głosów
595 wizyt
pytanie zadane 20 marca 2017 w PHP przez Gun3R Nowicjusz (120 p.)

Witajcie, mam taki kod w php:

<?php

//$connection = mysqli_connect("hostname","username","password","db_employee") or die("Error " . mysqli_error($connection));

	require_once "connect.php";
	mysqli_report(MYSQLI_REPORT_STRICT);
	
	try
	{ 
		$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
	
		if ($polaczenie->connect_errno!=0)
		{
			throw new Exception(mysqli_connect_errno());		
		}
		else
		{
					//fetch table rows from mysql db
					$sql = "select * from tbl_employee";
					$result = mysqli_query($polaczenie, $sql) or die("Error in Selecting " . mysqli_error($polaczenie));
							
				//create an array
					$emparray = array();
					while($row =mysqli_fetch_assoc($result))
					{
						$emparray[] = $row;
					}
				
				echo json_encode($emparray);
				
				//write to json file
					$fp = fopen('empdata.json', 'w');
					fwrite($fp, json_encode($emparray));
					fclose($fp);		
                   $polaczenie->close();
		}
	}	


	
	catch(Exception $e)
				{
					echo '<span style= "color:red;">Błąd serwera!</span>';
					echo '<br/> Informacja developerska.'.$e;
					
				}		
				
?>

Muszę zrobić usługę, na którą wywołanie metody GET zwróci wszystkie produkty z bazy, w tablicy w postaci JSON. Wysłanie danych o produkcie metodą POST powinno dodawać do bazy. 

I tu moje pytanie: jak mam w tym kodzie "zainstalować" funkcje POST i GET? Może macie jakieś proste tutoriale które mi to zobrazują. Próbowałem wielu ale wydają się być skomplikowane i nie umiem powiązać (zsynchronizować) tamtego kodu z moimi danymi z bazy.

 

Z góry dziekuję i pozdrawiam.

1 odpowiedź

+3 głosów
odpowiedź 20 marca 2017 przez xandros Nałogowiec (29,450 p.)
edycja 21 marca 2017 przez xandros

Tu masz rozwiazanie dla serwera:

  1. Prosta: https://www.slimframework.com/docs/objects/router.html
  2. Prosta: https://github.com/nikic/FastRoute
  3. Trudniejsza #pracochlonna : tworzenie wlasniego kontrolera requestów

Tu masz rozwiazanie dla klienta:

  1. Prosta: http://docs.guzzlephp.org/en/latest/
  2. Trudniejsza: http://codular.com/curl-with-php
  3. Trudniejsza: http://php.net/manual/en/function.fopen.phphttp://php.net/manual/en/function.stream-context-create.php#refsect1-function.stream-context-create-examples
  4. Najtrudniejsza: http://php.net/manual/en/function.fsockopen.php#refsect1-function.fsockopen-examples

Masz dodatkowo lekture: http://www.restapitutorial.com/lessons/httpmethods.html

Edit:

Event, po odświeżeniu zadziałało, ale dziwne. A sprawdź tą: http://www.restapitutorial.com/

komentarz 21 marca 2017 przez event15 Szeryf (93,790 p.)
Ostatni link padł
komentarz 21 marca 2017 przez Gun3R Nowicjusz (120 p.)
edycja 21 marca 2017 przez Gun3R

1. jak w takim razie rozdzielić rozwiazanie dla klienta i rozwiązanie dla serwera? gdzie mam zastosować jedno a gdzie drugie?

 

2. Gdy próbuję uzyć Guzzle albo tego Slim Framework to przeglądarka wyrzuca mi błąd "Fatal error: Class 'Slim\App' not found in C:\xampp\htdocs\projekt\api.php on line 40"

"Fatal error: Class 'GuzzleHttp\Client' not found in C:\xampp\htdocs\projekt\api.php on line 40"

Jak w takim razie przerobić te linie kodu, by wszystko działało? 

 

3. (również w Slim Framework) deklarowane są 3 zmienne: $request, $response, $args

One muszą sie do czegoś odnosić, ale z opisów poniżej nie bardzo wiem co dokładnie mam im przypisać i jakiej użyć składni. 

 

komentarz 21 marca 2017 przez xandros Nałogowiec (29,450 p.)
edycja 21 marca 2017 przez xandros

Event, zrobiłem edita, możesz sprawdzić?

#1 Miałem fajny film od JavaDevMatt, który w prosty sposób odpowiada na to pytanie. W skrócie serwer serwuje lub przetwarza dane, które otrzymał, a klient obsługuje odpowiedzi z serwera wraz z prezentacją pobranych danych.

W sumie coś znalazłem i jest nawet zjadliwe: https://youtu.be/7YcW25PHnAA

#2: a zainstalowales biblioteki i dołączyłeś autoloadera?

https://getcomposer.org/ 

https://youtu.be/RhcQXFeor9g 

#3 nie deklarowane, a przekazywane do callbacka. Slim3 używa standardów psr7. Dobrze byłoby, jakbyś wiedział, jak działa zapytanie do serwera http:

http://symfony.com/doc/current/introduction/http_fundamentals.html

https://en.wikipedia.org/wiki/Request%E2%80%93response

tldr;

$request to wszystkie dane odnosnie tego, co client wysłał, a $response to odpowiednio przygotowana zmienna, która odsyłasz do klienta.

https://www.slimframework.com/docs/objects/request.html

https://www.slimframework.com/docs/objects/response.html

$args, są w $request pod metodą getArguments(); lub getArgument(Nazwa, CoMaZwrocic,GdyNieZnajdzie);

Daj mi 30min, zrobie ci przyklad i wrzuce na gista

komentarz 21 marca 2017 przez xandros Nałogowiec (29,450 p.)
edycja 21 marca 2017 przez xandros
Trochę więcej niż 30 min:

## edit:
https://github.com/xandros15/client-server-example ##repo bo gist nie uznaje katalogów

zassysasz, instalujesz, odpalasz.

instalujesz komendą composer install

odpalasz komenda php runClient oraz php runServer, albo jak czujesz się na siłach ustawiasz nginxa/apacha/dockera/vargranta/cotammasz, tak aby to dzialalo :P

Jak używasz phpservera, to aplikacje klienta będziesz miał pod localhost oraz localhost/{id:posta}, a api localhost:8080 oraz localhost:8080/{id:posta}
komentarz 21 marca 2017 przez Gun3R Nowicjusz (120 p.)
a gdzie mam te komendy wpisać?
komentarz 21 marca 2017 przez xandros Nałogowiec (29,450 p.)

#2: a zainstalowales biblioteki i dołączyłeś autoloadera? 

https://getcomposer.org/

https://youtu.be/RhcQXFeor9g

komentarz 21 marca 2017 przez xandros Nałogowiec (29,450 p.)

Podobne pytania

0 głosów
2 odpowiedzi 535 wizyt
pytanie zadane 4 grudnia 2018 w PHP przez james4444 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 585 wizyt
pytanie zadane 5 stycznia 2019 w PHP przez Greeenone Pasjonat (16,100 p.)
0 głosów
0 odpowiedzi 194 wizyt
pytanie zadane 28 kwietnia 2019 w PHP przez manager96 Bywalec (2,050 p.)

93,385 zapytań

142,384 odpowiedzi

322,540 komentarzy

62,745 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...