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

Tworzenie API - PHP

Object Storage Arubacloud
0 głosów
5,672 wizyt
pytanie zadane 1 czerwca 2017 w PHP przez Justyna Obywatel (1,210 p.)

Hej mam za zadanie stworzyć podstawowe API w języku PHP, które pobierając dane z bazy danych realizuje dwie funkcjonalności, zwrócenie listy obiektów z bazy danych i jeszcze zwrócenie elementu o konkretnym ID. Ponadto utwórzyć aplikację lub stronę www, która będzie to API wywoływać.

 

Wytlumaczyłby mi ktoś jak się za to zabrać jak takie coś zacząć robic kroczek po kroczku? Ewentualnie jakieś tutoriale zarzucić??

3 odpowiedzi

0 głosów
odpowiedź 1 czerwca 2017 przez labzero Początkujący (480 p.)
wybrane 1 czerwca 2017 przez Justyna
 
Najlepsza

Hej,

nie do konca rozumiem co oznacza "podstawowe" API, ale zakladam ze chodzi o cos takiego, zeby np pod adresem /books zostala zwrocona lista ksiazek z bazy, a pod adresem /book/8 zostaly zwrocone dane ksiazki z ID = 8 z bazy. Jedyna roznica w stosunku do "standardowej" strony jest taka, ze zamiast htmla z np tabelka z lista ksiazek masz zwrocic same dane np w formacie json czy xml.

Czyli uruchamiajac strone /books w przegladarce wyswietli ci sie cos takiego:

[ { "id": 1, "title": "Ania z Zielonego Wzgorza"}, { "id": 2, "title": "W pustyni i w puszczy" }

 

A wchodzac na strone /book/2 np:

{"id": 2, "title": "W pustyni i w puszczy", "author": "Henryk Sienkiewicz" }

Czyli taki skrypt dla listy ksiazek wyglada mniej wiecej tak:

  1. Polaczenie z baza i odpowiednie zapytanie o liste ksiazek
  2. Cala liste ksiazek zamieniasz na JSON funkcja json_encode($books);
  3. Wyswietlasz jsona, normalnie echo (bez zadnych template'ow, htmla itp)

I podobnie dla szczegolow ksiazki (zwrocenie elementu o konkretnym id) - bedzie sie roznilo tylko zapytaniem do bazy.

Z kolei druga czesc zadania, czyli frontend, bedzie polegala na tym ze stworzysz szablon htmla z odpowiednimi id elementow, do ktorych chcesz dane "wstrzyknac". Do samego zapytania do API mozesz uzyc np jquery.

Zazwyczaj przy tworzeniu API dochodzi jeszcze kwestia autoryzacji, ale to chyba nie wchodzi w zakres "podstawowego API".

 

Jesli chcesz to API zrobic na Symfony mozesz uzyc sobie NelmioApiBundle do dokumentacji (fajnie sie testuje API, https://github.com/nelmio/NelmioApiDocBundle) i jmsSerializera (http://jmsyst.com/bundles/JMSSerializerBundle)

komentarz 2 czerwca 2017 przez Justyna Obywatel (1,210 p.)
edycja 2 czerwca 2017 przez Justyna
	function get_app_list(){
		$app_facebook = array("id" => "1", "app_name" => "Facebook", "app_price" => "Free", "app_version" => "2.0");
		$app_instagram = array("id" => "2", "app_name" => "Instagram", "app_price" => "Free", "app_version" => "2.0");
		$app_mailbox = array("id" => "3", "app_name" => "Mailbox", "app_price" => "1.9", "app_version" => "2.1");
		
		$app_list = array($app_facebook, $app_instagram, $app_mailbox);
		
		return $app_list;
	}

Zaczynam tworzyć api i mam coś takiego /\, powinnam w tego miejsce wykonac 3 zapytania do bazy czyli:

wyszukaj wszystkie ksiazki o id=1

wyszukaj wszystkie ksiazki o id=2

wyszukaj wszystkie ksiazki o id=3

i w kazda z tych zmiennych dane przypisac json_encode() tak??

 

I czy

  $app_info = file_get_contents('http://{Your Website}/api.php?action=get_app&id=' . $_GET["id"]);
  $app_info = json_decode($app_info, true);

W takim przypadku API musi byc na serverze czy mozna przy localhost?

komentarz 2 czerwca 2017 przez efiku Szeryf (75,160 p.)
zamiast array pisz   [], pisz też w php7..
To mi wygląda na jakieś skopiowane coś: )

Zamiast jej polecać coś  tak dużego lepiej coś mikro.

https://www.cloudways.com/blog/simple-rest-api-with-slim-micro-framework/

Jeśli to nie problem, użyj slima/silexa to zabawy z API, ewentualnie popatrz jak to wygląda i spróbuj napisać od zera, ale będziesz musieć wiedzieć co to REQUEST itd.
komentarz 2 czerwca 2017 przez Justyna Obywatel (1,210 p.)
Tylko powiedz mi czy API by działało musi być na serwerze czy przez localhost tez zadziała?
komentarz 2 czerwca 2017 przez labzero Początkujący (480 p.)

Request do API musi przejsc przez apacha i php. Jesli masz postawionego apacha pod localhost to bedzie ok.

Co do serializowania, mozesz zrobic jedna tablice apps i podac do json_encode();

php> $apps = [['id' => 1, 'name' => 'Facebook'], ['id' => 2, 'name' => 'Instagram']];

php > echo json_encode($apps, JSON_PRETTY_PRINT);
[
    {
        "id": 1,
        "name": "Facebook"
    },
    {
        "id": 2,
        "name": "Instagram"
    }
]

 

komentarz 3 czerwca 2017 przez efiku Szeryf (75,160 p.)

apacha  nginx :) 

+1 głos
odpowiedź 1 czerwca 2017 przez Tomek Sochacki Ekspert (227,510 p.)
Po pierwsze to poczytaj o podstawach PHP i jakieś bazy, np. MySQL. Do stworzenia aplikacji będziesz jeszcze potrzebował HTML/CSS (ewentualnie JS, ale nie wiem jak rozbudowana ma to być aplikacja).

Generalnie nikt Ci tu gotowca nie da raczej, proponuję, żebyś zaczął od nauki PHP/MySQL i w razie czego zadawał konkretne pytanka to pomożemy.
komentarz 1 czerwca 2017 przez Justyna Obywatel (1,210 p.)
Mam te podstawy, tylko nie wiem jak się za to zabrać, nie oczekuję gotowca tylko opisu jak to zrobić :/
komentarz 1 czerwca 2017 przez Vento Pasjonat (17,120 p.)
@Tomasz Sochacki jaki to ma związek z tematem? HTML/CSS do api?
komentarz 1 czerwca 2017 przez Tomek Sochacki Ekspert (227,510 p.)

@Vento, ma się to do ostatniej części wpisu autora wątku

"Ponadto utworzyć aplikację lub stronę www, która będzie to API wywoływać."

 

komentarz 1 czerwca 2017 przez gromula Stary wyjadacz (10,070 p.)
Po pierwsze soap/rest?
komentarz 1 czerwca 2017 przez Vento Pasjonat (17,120 p.)
Faktycznie. Przepraszam nie doczytałem do końca :)
komentarz 1 czerwca 2017 przez jpacanowski VIP (101,940 p.)
Nie wiedziałem, że HTML/CSS wywołuje API...
komentarz 1 czerwca 2017 przez Vento Pasjonat (17,120 p.)
@jpacanowski zapewne chodziło o wizualizacje danych..
0 głosów
odpowiedź 1 czerwca 2017 przez CzikaCarry Szeryf (75,340 p.)

No to tak:

Tworzysz tzw. Endpointy dla swojego API, czyli np. Pliki, które są wywoływane przez użytkownika, poprzez wysłanie requesta do tegoż pliku. Hasła do googlowania: RESTful, SOAP.

Endpointy nie muszą być koniecznie plikiem. Równie dobrze możesz zrobić jeden plik, tzw. Router, lub frontController, do którego trafiają wszystkie requesty do domeny, i na podstawie adresu URL lub zmiennych GET jest wywoływany odpowiedni kontroler / funkcja / plik etc. Po odebraniu requesta razem z danymi od użytkownika wysłanymi poprzez np. Metody GET, POST, PUT etc. możesz użyć tych danych np. do wygrania z bazy rekordu, zwrócić dane w postaci JSON i to tyle :)

Podobne pytania

0 głosów
1 odpowiedź 108 wizyt
0 głosów
1 odpowiedź 309 wizyt
0 głosów
0 odpowiedzi 172 wizyt
pytanie zadane 26 stycznia 2017 w Android, Swift, Symbian przez kaminki Obywatel (1,030 p.)

92,555 zapytań

141,403 odpowiedzi

319,554 komentarzy

61,940 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...