Autor Zpráva
jirkasak15
Profil
Ahoj,

dostal jsem za úkol vytvořit aplikaci pracující s API, ale nedaří se mi dostat, resp odeslat požadavek na server.

API využívá architekturu RESTfull API. Základním formátem pro komunikaci se systémem je JSON nebo POST. Veškeré požadavky i získaná data jsou tedy vyžadována ve formátu JSON nebo POST s příslušným nastavením Content-Type: application/json a poskytována ve formátu JSON.

Bohužel v JSON a celkově s meziserverovou komunikací jsem dost pozadu, tak bych vás rád požádal, o nějaký vzorový příklad, jak v tomto případě komunikovat se serverem.

Jako vzrovou situaci bych uvedl vyžádání dat o studentovi na základe student_id, které se má předat přávě pomocí JSON či POSTu.

Adresa na API:
https://skola.stranka.cz/api/<apiKey>/student

Předem děkuji.
Kubo2
Profil
jirkasak15:
JSON nebo POST s příslušným nastavením Content-Type: application/json
Metódou POST vo formáte JSON?

Jako vzrovou situaci bych uvedl vyžádání dat o studentovi na základe student_id, které se má předat přávě pomocí JSON či POSTu.
V každom prípade jednoducho pošleš na server požiadavok HTTP metódou POST. Surový požiadavok môže vyzerať napr. takto:

• POST
V tomto prípade sa dáta (identifikátor + hodnota) posielajú na server metódou POST vo formáte application/x-www-form-urlencoded.

POST /api/<apiKey>/student
Host: skola.stranka.cz
Content-Type: application/x-www-form-urlencoded

student_id=<studentId>

• JSON
V prípade JSONu pošleš JSON.

POST /api/<apiKey>/student
Host: skola.stranka.cz
Content-Type: application/json

{
    "student_id": <studentId>
}

<studentId> pritom musí byť číslo (v JSON kontexte). O JSONe si niečo prečítaj (česky). Konkrétne som ťa odkázal na originálnu JSON špecifikáciu.

V PHP je k tomuto účelu asi najjednoduchšie riešenie prostý file_get_contents(), ale odporúčal by som ti minimálne si vytvoriť nejaké vlastné rozhranie medzi touto HTTP komunikáciou s daným API a tvojou aplikáciou priamo v PHP.

Príklad s použitím file_get_contents() (predpokladám, že sa sám pozrieš do PHP Manuálu a dohľadáš si, ako pracujú funkcie, ktoré som v príklade použil).

<?php

$apiKey = 'toto je tvoje api key';
$apiRequest = array('student_id' => 123);

$json = file_get_contents("https://skola.stranka.cz/api/$apiKey/student", FALSE, stream_context_create([
    'http' => [
        'method' => 'POST',
        'header' => 'Content-Type: application/json',
        'user_agent' => 'jirkasak15 API client for https://skola.stranka.cz/api/',
        'content' => json_encode($apiRequest),
    ]
]));

$apiResponse = json_decode($json);
var_dump($apiResponse);
jirkasak15
Profil
Kubo2:

Děkuji za materiál, který jsi zde přidal, je to dobrý odrazový můstek. Určitě si o tom ještě něco dohledám, abych zaplnil tu mezeru ve znalostech. Nakonec jsem vše vyřešil pomocí cURL, které mi je dobře známé, každopádně ti moc děkuji.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: