Transcript

Олег АлистратовРуководитель офиса разработки в Киеве

API:взгляд потребителя

WebCamp 2015, Одесса

2

3

Протоколы

4

• JSON-RPC• REST• XML-RPC• SOAP• WSDL, WSCL, WSFL• CORBA• Java RMI• Apache Thrift• AMF• Microsoft RPC

5

Сериализация

6

• XML• Protocol Buffers• JSON• YAML• SDXF• CSV• Sereal

7

http://api.example.org/method?output=xml

8

Версионирование

9

api.example.org/v1/api.example.org/v1.0/api.example.org/v1.0.0/

Semantic Versioning: semver.org

10

api.example.org/v1/ → api.example.org/v1.x.x/

api.example.org/v1.0/ → api.example.org/v1.0.x/

11

Сигнатура функции

12

POST /get_status?n=2 HTTP/1.1Content-type:application/x-www-form-urlencoded;charset=utf-8Host: example.orgContent-length: 22

Action=GetStatus&Id=42

13

{ "method": "get_status", "params": { "n":42 }, "id":1}

14

Валидация данных

15

Лояльность на входе —строгость на выходе

16

{ "alpha": 2, "beta": "2.0", "gamma": "3,0", "delta": "4.0 ", "epsilon": null}

17

5 cебября 2014 г.→

?→

2014-09-05T00:00:00+02

18

“http://api.example.org/" + “/method"

19

Асинхронные вызовы,пакетные вызовы

20

[ {"jsonrpc": "2.0", "method": "sum", "params": [1,2,4], "id": "1"}, {"jsonrpc": "2.0", "method": "notify_hello", "params": [7]}, {"jsonrpc": "2.0", "method": "subtract", "params": [42,23], "id": "2"}]

21

Кэширование

22

• Request• no-cache• no-store• max-age• max-stale• min-fresh• no-transform• only-if-cached

• Response• public• private• no-cache• no-store• no-transform• must-revalidate• proxy-revalidate• max-age• s-maxage

23

• no cache• 5 seconds• 1 minute• 15 minute• 1 hour• 6 hours• 24 hours• never expires

24

Безопасность

25

• https://api.example.org/v1/method

• OAuth

26

Квоты

27

Пакет Цена Вызовов API / день Вызовов API / минуту

Разработчик $0 500 10

Стандарт $100 5000 100

Бизнес $200 100 000 1000

Олег Алистратов

Руководитель офиса разработки в Киеве

[email protected]

Спасибо


Recommended