• Nem Talált Eredményt

API tervezése mobil környezetbe

N/A
N/A
Protected

Academic year: 2022

Ossza meg "API tervezése mobil környezetbe"

Copied!
22
0
0

Teljes szövegt

(1)

API tervezése mobil környezetbe

gyakorlat

(2)

Feladat

• Szenzoradatokat gyűjtő rendszer

• Mobil klienssel

• Webes adminisztrációs felület

(3)

API „felhasználói”

Szenzor node

Egyirányú adatküldés

Kis számítási kapacitás

Feltételezzük, hogy HTTPS-képes

Nincs humán interfész

Telefonos kliens

Bizonytalan kapcsolat, esetleg drága is

Nagy számítási kapcsolat

Webes felület

Web böngésző!

Lehet webes vékony-kliens

Akkumulátoros táplálás (+napelem)

Nehezen megközelíthető, távoli helyszín

Vezeték nélküli (bizonytalan) kapcsolat

(4)

Megvalósítandó rész-funkciók

• A „felhasználók” azonosítása:

Nem akarjuk, hogy illetéktelenek adatokat olvassanak, illetve küldjenek be

• Adatok fogadása

• Adatok megjelenítése, törlése

• Az adatokat szolgáltató szenzorok nyilvántartása

• Felhasználók kezelése

(5)

Ismétlés – REST API

• Egy API akkor lesz REST, ha teljesíti a következő megszorításokat:

Kliens-szerver architektúra

Állapotmentesség

Gyorsítótárazhatóság

Réteges felépítés (proxy szerverek támogatása)

Igényelt kód

Egységes interfész

(6)

Átvitel: HTTPS

• HTTPS:

Használjuk a HTTP hibakódokat

Használjuk a titkosítást

Használjuk a hitelesítést

(7)

Bejelentkezés

• A szenzor node-ok esetén nincs lehetőség felhasználónév, jelszó bekérésére minden adatküldéskor:

API key

Szenzor azonosító

Az API key és a szenzor azonosító védelme elvileg megoldható:

Flash titkosítás, kiolvasás megakadályozása stb.

• A mobil, illetve webes interfész esetén felhasználónév-jelszó alapú bejelentkezés

(8)

Adatok küldése

• Lehet valósidejű, és nem valósidejű adatküldés

Utóbbi esetben időbélyeg is tartozik az adathoz.

• Hálózati kimaradások esetén kötegelt beküldés lehetséges

Overhead csökkentése érdekében

Gyorsabb beküldés – használjuk ki, ha van hálózat

• Mit tartalmaz egy mérés?

Időbélyeg – explicit, vagy implicit (aktuális adat)

Mért érték

Mérő eszköz azonosítója

Esetleg metaadatok (például mértékegység, a mérési körülményekre vonatkozó adatok stb.) – nem foglalkozunk vele

(9)

Szenzorok, mérések, felhasználók nyilvántartása

Művelet RESTful Web Services HTTP művelet (method)

Create POST*

Read GET

Update PUT*

Delete DELETE

* Nem csak így jó, az [URL, HTTP művelet] – [resource, művelet] összerendelés nem triviális.

(10)

Adatok átvitele általánosan

• Strukturált adat

Könnyebb feldolgozás

Bővíthetőség

Újabb metaadatok

Visszafele kompatibilitás biztosítása újabb verziók esetén

(adatbázis kialakítása: szeretjük az új attribútumok megjelenését)

(11)

Egy API?

• Két API-t tervezünk

Egy egyszerű adatfogadó API a szenzor node-okhoz

Egy CRUD műveleteket tartalmazó API a humán felhasználású felületekhez

(12)

API URL-ek

• Szenzor node API

/sensor_api/

Adatfogadó végpont:

/sensor_api/measurement/new [POST]

/sensor_api/bulk/measurements [POST]

• Web és mobil API

/api

Autentikáció, token-generálás

/api/login

Adatműveletek:

/api/<adat típusa>/new [POST]

/api/<adat típusa>/<id> [GET]

/api/<adat típusa>/<id> [DELETE]

/api/<adat típusa>/<id> [PUT]

/api/<adat típusa többesszám> [GET]

Művelet RESTful Web Services HTTP

művelet (method)

Create POST*

Read GET

Update PUT*

Delete DELETE

(13)

Szenzor felület

/sensor_api/measurement/new

• A szenzor node-ok küldenek pontosan egy darab adatot

{

"sensor_node_id": "00:11:22:33:44:55",

"api_key": "Y2lybW9zY2ljYWhhaixob3ZhbGV0dGF2YWo",

"measurement": {

"sensor_node_id": "00:11:22:33:44:55",

"value": 15,

"meta": {

"unit": "°C"

} } }

Ez jobb helyen lehet egy request

headerben

(14)

Kitérő: API key küldése

URL:

GET /new ?api_key=Y2lybW9zY2ljYWhhaixob3ZhbGV0dGF2YWo

HTTPS használata esetén a TCPpayload-ban SSL titkosított URL: ....a].b..

Szerver logban: /new ?api_key=Y2lybW9zY2ljYWhhaixob3ZhbGV0dGF2YWo

(browser history, referer request header: kép, js, analytics)

Request header:

GET /new HTTP/1.1

X-API-Key: Y2lybW9zY2ljYWhhaixob3ZhbGV0dGF2YWo

Cookie:

GET /new HTTP/1.1

Cookie: X-API-KEY=Y2lybW9zY2ljYWhhaixob3ZhbGV0dGF2YWo

(15)

Szenzor felület

/sensor_api/measurement/new

• Mi legyen a válasz?

Ki kell, hogy derüljön a művelet sikeressége.

Kis sávszélesség, nem küldünk fölöslegesen adatot.

{ “result": "ok" }

(16)

Szenzor felület

/sensor_api/bulk/measurements/

{

"sensor_node_id": "00:11:22:33:44:55",

"api_key": "Y2lybW9zY2ljYWhhaixob3ZhbGV0dGF2YWo ",

"measurement": [ {

"sensor_node_id": "00:11:22:33:44:55",

“timestamp": “2018-09-12T12:14:00Z",

"value": 15,

"meta": {

"unit": "°C"

} } ] }

(17)

Web (és mobil) felület – bejelentkezés

• /api/login

{ "username": "sandor", "password": "piros7es" }

{ "token": "xZByw7xsdCBtaW5kZW4gZsWxc3rDoWwu" }

(18)

Webes felület – CRUD műveletek – Create

• /api/<adat típusa>/new [POST]

• A szenzor felület beküldő interfészéhez teljesen hasonlóan, az

autentikációs tokennek szerepelnie kell: betesszük egy HTTP kérés fejlécbe. A hozzáférési jogosultság ellenőrzése az alapján történik

• Mivel itt a sávszélesség megengedi, és haszna lehet, új elem esetén visszaküldhető az új létrehozott objektum, vagy annak egyedi

azonosítója (később ezzel hivatkozhatunk rá)

(19)

Webes felület – CRUD műveletek – Read, Update

• /api/<adat típusa>/<id> [GET, PUT]

• Kellhet a token, az adatra az egyedi azonosítójával hivatkozunk

• GET esetén nincs beküldött adat, ezért is praktikus a fejlécbe tenni a tokent.

(20)

Webes felület – tételek listázása

• Semmi különös, tömbbel térünk vissza

• Mi történik, ha sok az adat?

• Lapozás – paging, adatok szűrése

Ha nem érvényes a szűrő kifejezés, visszatérés hibával

• GET paraméterekkel

• /api/measurements?from=2017-12-12T10:00:00Z&until=2018-01- 12T10:00:00Z

(21)

Webes felület – tételek listázása, másként

• Gyakori lekérdezések entitásokhoz kapcsolódóan

• /api/sensor/5/measurements

• /api/measurements?sensor=5

• Nem egy jó megoldás létezik

(22)

Az API hívások eredménye – hibák

• HTTP hibakódokkal kezelhetők

200 OK

201 Created

401 Unauthorized

403 Forbidden

404 Not Found

418 I'm a teapot

500 Internal Server Error

Hivatkozások

KAPCSOLÓDÓ DOKUMENTUMOK

// Szerelem (amely) senki szeretettnek nem engedi meg, hogy viszont ne sze- ressen, / az őérte (Paolo) való vágy engem olyan erősen megragadott, / hogy, mint látod, még most sem

(4) bekezdés szerinti nyilatkozat megtételére szolgál. - Költségvetési előirányzat államháztartási egyedi azonosítója: Az államháztartási egyedi azonosító

Hogy Jókai szabad és színes lelke nem tűri a de- terminációt, a megalkuvó, szürke élet béklyóit, hogy korlátlan erejű hősöket teremt és démoni gonosz- ságot láttat,

Az Ék ugyan már nem pukkasztani akart, de „fölvágni, hasítani, utat törni&#34; — mint Illyés Gyula mondja —, de még mindig nagy volt benne, mint az egész bécsi

23,7 millió tonna élelmiszer, 7 milliárd USD értékben NAPONTA5. Elvileg: 12-14 milliárd ember

Az alkalmazott technikák is széles kört ölelnek fel, de leggyakrabban a kliensre összpontosító (rogers-i) terápiát és a játékterápiát alkalmazzák. Az egyéni

Elérkezett-e vájjon már a pillanat, midőn a Honvédség vezetői nyugodt lelkiismerettel fordulhatnak a magyar néphez és a nép aka- ratát képviselő, kormányzathoz erkölcsi

A konzervatív formák győzelme sem jelenti minden tartalom megsemmisülését, csupán azt, hogy a haladó gondo- lat helyett az ellentétes, réakciós tartalom jut túlsúlyra a