Upgrade to Pro — share decks privately, control downloads, hide ads and more …

REX API Platform

REX API Platform

Talk given at PHPTour Nantes 2017
Joindin: https://joind.in/event/php-tour-2017-nantes-/rex-api-platform

Olivier Dolbeau

May 19, 2017
Tweet

More Decks by Olivier Dolbeau

Other Decks in Programming

Transcript

  1. Olivier Dolbeau
    1

    View Slide

  2. 2

    View Slide

  3. Disclaimer
    I used API Platform for a side project.
    I'm NOT an heavy user.
    3

    View Slide

  4. 4

    View Slide

  5. 5

    View Slide

  6. 6

    View Slide

  7. 7

    View Slide

  8. 8

    View Slide

  9. 9

    View Slide

  10. 10

    View Slide

  11. 11

    View Slide

  12. 12

    View Slide

  13. 13

    View Slide

  14. 14

    View Slide

  15. 15

    View Slide

  16. 16

    View Slide

  17. 17

    View Slide

  18. Enough documentation!
    18

    View Slide

  19. Who
    am
    I?
    19

    View Slide

  20. Twitter: @odolbeau
    Mastodon: [email protected]
    Olivier
    Dolbeau
    Web Developer / Architect
    Symfony fan
    #swarrot maintainer
    be[a|e]r lover
    20

    View Slide

  21. Time
    Love
    @Annotations
    UUID
    21

    View Slide

  22. 22

    View Slide

  23. Side project
    Goal: create a MVP for a SAAS product
    Need: a sexy & dynamic interface
    Let's use API Platform + a random modern JS framework!
    23

    View Slide

  24. Basic business rules
    SAAS product: need to deal with clients
    As a client: I can submit documents
    24

    View Slide

  25. Project organisation
    25

    View Slide

  26. Business organisation
    26

    View Slide

  27. An entity
    27

    View Slide

  28. Business organisation
    28

    View Slide

  29. The storage
    29

    View Slide

  30. Create
    30

    View Slide

  31. Update
    31

    View Slide

  32. Find a
    document
    32

    View Slide

  33. Business organisation
    33

    View Slide

  34. Normalizer
    34

    View Slide

  35. Denormalizer
    35

    View Slide

  36. Business organisation
    36

    View Slide

  37. 37

    View Slide

  38. 38

    View Slide

  39. 39

    View Slide

  40. UserProvider
    40

    View Slide

  41. UserInterface
    implementation
    41

    View Slide

  42. 42

    View Slide

  43. 43

    View Slide

  44. From Doctrine to ES
    No pain, no gain.
    44

    View Slide

  45. From Doctrine to ES
    With UUIDs.
    45

    View Slide

  46. From Doctrine to ES
    Without annotations.
    46

    View Slide

  47. AppBundle
    47

    View Slide

  48. 48

    View Slide

  49. 49

    View Slide

  50. 50

    View Slide

  51. “ A data provider using Doctrine
    ORM to retrieve data from a
    database is included with the library
    and is enabled by default.
    “ But sometime, you want to
    retrieve data from other sources
    such as another persistence layer, a
    webservice, ElasticSearch or
    MongoDB. Custom data providers
    can be used to do so.
    51

    View Slide

  52. 52

    View Slide

  53. 53

    View Slide

  54. 54

    View Slide

  55. 55

    View Slide

  56. ?
    56

    View Slide

  57. 57

    View Slide

  58. 58

    View Slide

  59. 59

    View Slide

  60. 60

    View Slide

  61. 61

    View Slide

  62. 62

    View Slide

  63. 63

    View Slide

  64. 64

    View Slide

  65. 65

    View Slide

  66. We created
    An ItemDataProvider
    A CollectionDataProvider
    A Subscriber to persist our entity
    A custom Normalizer
    66

    View Slide

  67. 67

    View Slide

  68. 68

    View Slide

  69. Hydra
    JSON-LD
    Doctrine
    Documentation
    JWT
    Full working
    example without
    Doctrine
    Ecosystem
    69

    View Slide

  70. ?
    Performances
    Filters
    Relations
    Pagination
    Extensions
    70

    View Slide

  71. 71

    View Slide