Open Data Protocol pro PHPkáře
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Open Data Protocol pro PHPkářeOpen Data Protocol pro PHPkáře

 

Open Data Protocol pro PHPkáře

Google       Google       6. 12. 2010       16 528×

Open Data Protocol jako způsob, jak publikovat obsah databáze nebo jiných strukturovaných dat v prostředí internetu za použití existujících standardů.

Reklama
Reklama

Na internetu najdete obrovské množství informací. To platí ovšem pro člověka. Pokud tyto informace chce zpracovávat počítač, tak to může být velmi obtížné. Formát HTML, ve kterém se informace publikují, je primárně určen pro lidi a některé důležité informace se v něm ztrácejí, i když v původním zdroji informace byla. Malý příklad:

Dlouhá 8

Asi odhadneme, že se jedná o jméno ulice, ale co znamená číslo 8? Je to číslo popisné, nebo orientační? Člověk to bude schopen na základě svých životních zkušeností velmi pravděpodobně uhodnout. Takto malé číslo bude nejspíš číslo orientační, které určuje pořadí budovy v ulici. Ale nemusí to tak být. Pokud půjde o malé sídlo, tak to klidně může být číslo popisné (http://cs.wikipedia.org/wiki/Číslo_popisné).

Pokud už jsou informace publikovány ve strukturované podobě, tak každý poskytovatel dat má svůj vlastní formát. Příkladem může být naše státní správa. Informace o podnikatelských subjektech ve strukturované podobě najdete na serveru ARES (http://wwwinfo.mfcr.cz/ares/ares.html.cz). Popis formátu je pak v sekci XML SLUŽBY. Každý podnikatelský subjekt má tzv. OKEČ, který určuje obor činnosti. I když je tato informace v různých rejstřících státní správy stejná, formát publikování se pro různé rejstříky liší.

Tyto problémy se snaží řešit Open Data Protocol (OData). Zjednodušeně řečeno, je to způsob, jak publikovat obsah databáze, nebo jiných strukturovaných dat, v prostředí internetu za použití existujících standardů. Protokol je postaven na návrhovém vzoru REST (http://cs.wikipedia.org/wiki/Representational_State_Transfer)  a data serializuje podle požadavku klienta do formátu ATOM (http://cs.wikipedia.org/wiki/Atom_(standard)) nebo JSON (http://cs.wikipedia.org/wiki/JSON). Navíc protokol přidává dotazovací jazyk, který sjednocuje způsob vytváření dotazů pro různé datové zdroje. Datový zdroj poskytuje také metadata, která se využívají pro popis datové struktury. Popis protokolu, knihoven a poskytovatelů dat najdete na adrese http://www.odata.org.

Praktická ukázka

Na adrese http://services.odata.org/Northwind/Northwind.svc/ najdete ukázkový datový zdroj. Jak vidíte, k serializaci se používá formát ATOM. Pokud se chcete podívat na strukturu datového zdroje, stačí si požádat o metadata: http://services.odata.org/Northwind/Northwind.svc/$metadata.

Pár příkladů:

A tak bychom mohli pokračovat dál.

Abychom se nemuseli zabývat ručním sestavováním dotazů a následným zpracováním odpovědi, můžeme si na základě metadat vytvořit tzv. proxy třídu. Proxy třída představuje obraz datového zdroje na straně klienta a zapouzdřuje komunikaci se serverem. Programátor pak pracuje s lokálními objekty, které proxy třída synchronizuje s daty na serveru. Abychom si mohli nechat vytvořit proxy třídu pro PHP aplikaci, budeme potřebovat OData SDK for PHP (http://odataphp.codeplex.com/).

Instalace OData SDK for PHP

  1. Povolte rozšíření PHP_XSL a PHP_CURL.
  2. Obsah adresáře framework z instalačního balíčku nakopírujte do libovolného adresáře, např. C:\php\odata.
  3. Tento adresář přidejte do include_path v php.ini: include_path = ".; C:\php\odata".
  4. V php.ini vytvořte proměnnou ODataphp_path:
    ;OData SDK for PHP Library Path
    ODataphp_path = "C:\PHPLib\odataphp".
  5. Povolte a nastavte proměnnou date.timezone v php.ini.
  6. [Date]
    ;Defines the default timezone used by the date functions
    date.timezone = Europe/Prague

Detailní instrukce najdete v adresáři doc v instalačním balíčku.

Vytvoření proxy třídy

Vlastní proxy třídu vytvoříte pomocí skriptu PHPDataSvcUtil.php. Základní syntaxe vyžaduje jen jeden parametr, a to koncový bod služby. Pokud využijeme naši vzorovou službu, bude příkaz a výsledek vypadat takto:

c:\Temp>php c:\php\odata\PHPDataSvcUtil.php /uri=http://services.odata.org/Northwind/Northwind.svc/
Done: OData Service Proxy File 'NorthwindEntities.php' generated at .

Vytvořený soubor NorthwindEntities.php musíte zařadit do svého projektu.

Práce se zdrojem dat pomocí proxy třídy

<?php
    include_once 'NorthwindEntities.php';
    $svc = new NorthwindEntities('http://services.odata.org/Northwind/Northwind.svc/');
    $query = $svc->Customers()->filter("Country eq 'USA'")
                               ->Select('CustomerID,CompanyName');
    $customersResponse = $query->Execute()
    foreach($customersResponse->Result as $customer)
    {
     echo "CustomerID:" . $customer->CustomerID . "\n";
     echo "Company Name:" . $customer->CompanyName . "\n";
     echo "Country:" . $customer->Country . "\n"; // nic nevypíše, není v Select
     echo "----------\n";
    }  
?>

Jak vidíte z kódu, o sestavení dotazů a následné zpracování odpovědí, včetně serializace a deserializace dat, se postará proxy třída.

Pomocí protokolu OData můžete data v datovém zdroji samozřejmě i měnit.

Vytvoření nového záznamu

    try
    {
        $cat = Categories::CreateCategories(0, 'Pivo')
        $svc->AddToCategories($cat);
        $svc->SaveChanges();
        echo "CategoryID nového záznamu: " . $cat->CategoryID . "\n";
    }
    catch (ODataServiceException $e)
    {
        echo "Chyba:" .  $e->getError() . "\nPopis:" . $e->getDetailedError();
    }
    catch(InvalidOperation $e)
    {
        echo $e->getError();
    }

K přidání záznamu potřebujete vytvořit lokální objekt (řádek v tabulce), který následně vložíte do správné kolekce (tabulky). To vše se děje na straně klienta a server o ničem neví. Vlastní uložení se provede metodou SaveChanges, která vyvolá odeslání dat na server. Server po zpracování záznamu pošle odpověď, která obsahuje nově uložený záznam, v němž jsou již všechny automaticky doplňované informace, např. nově přiřazené ID záznamu.

Aktualizace záznamu

$cat->Description = 'To nejlepší pivo';
$svc->UpdateObject($cat);
$svc->SaveChanges();

Změnu provedete opět na straně klienta a pak uložíte na server.

Odstranění záznamu

$svc->UpdateObject($cat);
$svc->SaveChanges();

Závěr

Protokol OData se postupně stává de-facto standardem pro všechny serverové aplikace společnosti Microsoft a začíná se využívat i u třetích stran, které potřebují publikovat obsah svých databází v prostředí internetu.

Autorem článku je Štěpán Bechynský z Microsoftu.
Televize pro vývojáře
Vše pro vývojáře

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Lukáš ChurýLukáš je šéfredaktorem Programujte, vyvíjí webové aplikace, fascinuje ho umělá inteligence a je lektorem na FI MUNI, kde učí navrhovat studenty GUI. Poslední dobou se snaží posunout Laser Game o stupeň výše a vyvíjí pro něj nové herní aplikace a elektroniku.
Web     Twitter     Facebook     LinkedIn    

Nové články

Obrázek ke článku Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Touto roční dobou, kdy je zem pokrytá barevným listím a prsty křehnou v mrazivých ránech, se obvykle těšíme na zbrusu novou verzi RAD Studia. Letos si však ale budeme muset počkat na Godzillu a Linux až do jara. Vezměme tedy za vděk alespoň updatem 2 a jelikož dle vyjádření pánů z Embarcadero se budou nové věci objevovat průběžně, pojďme se na to tedy podívat.

Reklama
Reklama
Obrázek ke článku Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Stále rostoucí zájem o cloudové služby i maximální důraz na pružnost, spolehlivost a bezpečnost IT vedou k výrazným inovacím v datových centrech. V infrastruktuře datových center hraje stále významnější roli software a stále častěji se lze setkat s hybridními přístupy k jejich budování i provozu.

Obrázek ke článku Konference: Mobilní technologie mají velký potenciál pro byznys

Konference: Mobilní technologie mají velký potenciál pro byznys

Firmy by se podle analytiků společnosti Gartner měly  rychle přizpůsobit skutečnosti, že mobilní technologie už zdaleka nejsou horkou novinkou, ale standardní součástí byznysu. I přesto - nebo možná právě proto - tu nabízejí velký potenciál. Kde tedy jsou ty největší příležitosti? I tomu se bude věnovat již čtvrtý ročník úspěšné konference Mobilní řešení pro business.

Obrázek ke článku Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres HCPP16 pořádá od 30. září do 2. října nezisková organizace Paralelní Polis již potřetí, a to ve stejnojmenném bitcoinovém prostoru v pražských Holešovicích. Letos přiveze na třídenní konferenci přes 40 většinou zahraničních speakerů – lídrů z oblastí technologií, decentralizované ekonomiky, politických umění a aktivismu. Náměty jejich přednášek budou také hacking, kryptoměny, věda, svoboda nebo kryptoanarchie.

Reklama autora

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý