[PHP] Dynamische REST webservice koppeling

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Gamerkoe
  • Registratie: Maart 2003
  • Laatst online: 08-08 21:43
Ik loop een beetje vast in een wens die ik heb. Hopelijk heeft één van jullie voor mij een antwoord hoe dit op te lossen. Het gaat om een REST API koppeling die ik het liefst dynamisch opbouw. Op deze manier kan ik natuurlijk snel en makkelijk nieuwe resources koppelen zonder hele blokken code te kopiëren+plakken.

Stel we hebben drie resources: products, orders en orderrows.
Per resource bestaan er vier methods: GET, POST, PATCH en DELETE

In mijn gedachten moet het zo worden dat deze vier methods op alle resources toe te passen zijn. Daarbij zijn er ook functies om een resource om te zetten naar objecten met specifieke eigenschappen van die resource. Zo bevat een product bijvoorbeeld een naam en omschrijving, maar een order bevat een ordernummer en aanmaakdatum.

Onderstaande code werkt tot zover ik in gedachten had.

code:
1
2
3
4
$Api = new Api();

$Api::Products()->Get(); # products::GET
$Api::Orders()->Get();  # orders::GET


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
api.php

class Api{
    private static $_instance = null;
    
    
    static public function Products(){
        if (self::$_instance === null) {
            self::$_instance = new self;
        }

        echo 'products';

        return self::$_instance;
    }
    
    static public function Orders(){
        if (self::$_instance === null) {
            self::$_instance = new self;
        }

        echo 'orders';

        return self::$_instance;
    }
    
    static public function Orderrows(){
        if (self::$_instance === null) {
            self::$_instance = new self;
        }

        echo 'orderrows';

        return self::$_instance;}




    static public function Get(){
        echo '::GET';
        echo "<br /><br />";
    }
    static public function Patch(){}
    static public function Post(){}
    static public function Delete(){}


    static public function ToSystem(){
        echo ' matching ';
        include('Products.php');
    }
}


Nu output de class natuurlijk alleen tekst, de bedoeling is dat er dynamisch een webservice aangeroepen wordt. Alleen zoek ik een manier om simpel een opgehaald product om via een matching wijze de velden uit de webservices naar een eigen naamgeving te bouwen.
Dus bijvoorbeeld dat de velden 'name' en 'description' worden omgezet naar eigen naamgevingen 'Name' en 'Description'. Het idee hierachter is dat een tweede webservice misschien de velden 'productname' en 'productdescription kent, die ik via een aparte matching ook om kan zetten naar eigen naamgevingen 'Name' en 'Description'.

De tweede webservice valt buiten deze scope, dat zal gaan komen in een tweede api.php bestand specifiek voor die webservice.
Ik hoop dat ik het een beetje heb kunnen uitleggen. Anders hoor ik graag jullie ideeën. Waarvoor dank alvast natuurlijk!!

20x SF170s + SMA SB3000TL-21 | PV Output


Acties:
  • 0 Henk 'm!

  • HollowGamer
  • Registratie: Februari 2009
  • Niet online
Ik probeer je te begrijpen, maar heb je misschien een voorbeeld? :)
Kijk ook eens naar Laravel, die lost het op een nette manier op.

Als ik het goed begrijp wil je dynamische relaties opzetten?
Dus als je Product::get(int $id) opvraagt, er automatisch de orders van worden opgehaald?
Is dit wel handig?

Acties:
  • +1 Henk 'm!

  • Ypho
  • Registratie: April 2008
  • Laatst online: 12:11

Ypho

Allround Nerd

Je maakt nu zelf een API begrijp ik? Dit is supermakkelijk als je een framework daarvoor hebt. Ik gebruik zelf Lumen om REST Api's te maken. Dat is een lightweight versie van Laravel waarin alleen Api-nuttige dingen in zitten.

🃏 TCG Codex - Je volledige TCG verzameling in je broekzak ::: 🍏 TCG Codex for iOS ::: 🤖 TCG Codex for Android


Acties:
  • 0 Henk 'm!

  • vickypollard
  • Registratie: Juni 2009
  • Laatst online: 19:06
Ik heb nog niet echt een beeld bij wat je wilt. Je taalgebruik is wat warrig en ik denk dat een duidelijk voorbeeld van wat je verwacht, handig zou zijn.