Mit dem API ins CMS

61
MIT DER API INS CMS MIT DER API INS CMS MAXIMILIAN BERGHOFF - 01.06.2016 MAXIMILIAN BERGHOFF - 01.06.2016 Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/ 1 von 61 01.06.2016 10:18

Transcript of Mit dem API ins CMS

Page 1: Mit dem API ins CMS

MIT DER API INS CMSMIT DER API INS CMSMAXIMILIAN BERGHOFF - 01.06.2016MAXIMILIAN BERGHOFF - 01.06.2016

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

1 von 61 01.06.2016 10:18

Page 2: Mit dem API ins CMS

APIAPI==

REST APIREST API

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

2 von 61 01.06.2016 10:18

Page 3: Mit dem API ins CMS

CONSTRAINTSCONSTRAINTS

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

3 von 61 01.06.2016 10:18

Page 4: Mit dem API ins CMS

ADDRESSIERBARKETADDRESSIERBARKET

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

4 von 61 01.06.2016 10:18

Page 5: Mit dem API ins CMS

STATELESSNESSSTATELESSNESS

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

5 von 61 01.06.2016 10:18

Page 6: Mit dem API ins CMS

REPRÄSENTATIONREPRÄSENTATION

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

6 von 61 01.06.2016 10:18

Page 7: Mit dem API ins CMS

OPERATIONENOPERATIONEN

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

7 von 61 01.06.2016 10:18

Page 8: Mit dem API ins CMS

HATEOASHATEOAS

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

8 von 61 01.06.2016 10:18

Page 9: Mit dem API ins CMS

RESTRESTREPRESENTATIONAL STATE TRANSFERREPRESENTATIONAL STATE TRANSFER

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

9 von 61 01.06.2016 10:18

Page 10: Mit dem API ins CMS

RESOURCESRESOURCES

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

10 von 61 01.06.2016 10:18

Page 11: Mit dem API ins CMS

BILDER, MUSIK, ...BILDER, MUSIK, ...

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

11 von 61 01.06.2016 10:18

Page 12: Mit dem API ins CMS

HTML PAGESHTML PAGES

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

12 von 61 01.06.2016 10:18

Page 13: Mit dem API ins CMS

TEMPLATES ODERTEMPLATES ODERSNIPPETSSNIPPETS

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

13 von 61 01.06.2016 10:18

Page 14: Mit dem API ins CMS

Maximilian [email protected]/electrimaxxxMay�ower GmbH - WürzburgMaximilian.Berghoff@may�ower.de

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

14 von 61 01.06.2016 10:18

Page 15: Mit dem API ins CMS

PERSISTENCEPERSISTENCE

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

15 von 61 01.06.2016 10:18

Page 16: Mit dem API ins CMS

PHPCRPHPCR

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

16 von 61 01.06.2016 10:18

Page 17: Mit dem API ins CMS

RDBMS ODER NOSQL?RDBMS ODER NOSQL?

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

17 von 61 01.06.2016 10:18

Page 18: Mit dem API ins CMS

BAUMBAUM

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

18 von 61 01.06.2016 10:18

Page 19: Mit dem API ins CMS

BLICK IN DEN CODEBLICK IN DEN CODE

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

19 von 61 01.06.2016 10:18

Page 20: Mit dem API ins CMS

/** @var PHPCR\SessionInterface */private $session;.../** Get a resource */$parentNode = $this->session->getNode('/test/resource');

/** Create a new Node */$parentNode->addNode('child', 'some-type');

/** Move a node */$this->session->move('/test/resource', '/test/some-where-else');

/** Remove a node and its children */$this->session->removeItem('/test/some-where-else/child');

/** Complete all managed changes */$this->session->save();

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

20 von 61 01.06.2016 10:18

Page 21: Mit dem API ins CMS

IMPLEMENTATIONS?IMPLEMENTATIONS?Jackalope Doctrine DBALJackalope Jackrabbit

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

21 von 61 01.06.2016 10:18

Page 22: Mit dem API ins CMS

DOCTRINE?DOCTRINE?YES, DOCTRINE/PHPCR-ODM + SYMFONYYES, DOCTRINE/PHPCR-ODM + SYMFONY

BUNDLEBUNDLE

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

22 von 61 01.06.2016 10:18

Page 23: Mit dem API ins CMS

RESOURCESRESOURCES

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

23 von 61 01.06.2016 10:18

Page 24: Mit dem API ins CMS

APIAPI

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

24 von 61 01.06.2016 10:18

Page 25: Mit dem API ins CMS

CONTENTCONTENT/CMS/CONTENT/DEMO/CMS/CONTENT/DEMO

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

25 von 61 01.06.2016 10:18

Page 26: Mit dem API ins CMS

GET /api/phpcrodm_repo/demo HTTP/1.1Host: 127.0.0.1:8080Accept: application/json

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

26 von 61 01.06.2016 10:18

Page 27: Mit dem API ins CMS

{ "repository_alias": "phpcrodm_repo", "repository_type": "doctrine_phpcr_odm", "payload_alias": "demo", "payload_type": "AppBundle\\Document\\DemoSeoContent", "path": "\/demo", "node_name": "demo", "label": "demo", "repository_path": "\/demo", "children": [], "payload": { "title": "Demo title", "body": "Body of demo content" }}

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

27 von 61 01.06.2016 10:18

Page 28: Mit dem API ins CMS

cmf_resource: repositories: phpcrodm_repo: type: doctrine_phpcr_odm basepath: /cms/content

cmf_resource_rest: payload_alias_map: content: repository: phpcrodm_repo type: "AppBundle\\Document\\DemoSeoContent"

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

28 von 61 01.06.2016 10:18

Page 29: Mit dem API ins CMS

/api/[repository]/[reduced-path]

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

29 von 61 01.06.2016 10:18

Page 30: Mit dem API ins CMS

PATCH /api/phpcrodm_repo/demo HTTP/1.1Host: 127.0.0.1:8080Accept: application/jsonContent-Type: application/jsonCache-Control: no-cache

{ "node_name":"new-demo" }

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

30 von 61 01.06.2016 10:18

Page 31: Mit dem API ins CMS

DELETE /api/phpcrodm_repo/demo HTTP/1.1Host: 127.0.0.1:8080Accept: application/json

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

31 von 61 01.06.2016 10:18

Page 32: Mit dem API ins CMS

EDIT? CREATE?EDIT? CREATE?

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

32 von 61 01.06.2016 10:18

Page 33: Mit dem API ins CMS

IN PROGRESSIN PROGRESS

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

33 von 61 01.06.2016 10:18

Page 34: Mit dem API ins CMS

REPOSITORYREPOSITORYPULIPULI

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

34 von 61 01.06.2016 10:18

Page 35: Mit dem API ins CMS

FILES, TEMPLATES,FILES, TEMPLATES,SNIPPETSNIPPET

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

35 von 61 01.06.2016 10:18

Page 36: Mit dem API ins CMS

GET /api/default/snippet1.html HTTP/1.1Host: 127.0.0.1:8080

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

36 von 61 01.06.2016 10:18

Page 37: Mit dem API ins CMS

{ "repo": { "change_stream": null, "symlink_supported": true, "base_dir": "/home/maximilian/Cmf/cmf-sandbox/app/Resources/views/snippets", "base_dir_length": 72, "symlink": true, "relative": true, "filesystem": {} }, "path": "/snippet1.html",u "repo_path": "/snippet1.html", "filesystem_path": "/home/maximilian/Cmf/cmf-sandbox/app/Resources/views/snippets/snip "payload": "<h1>Snippet 1</h1>"}

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

37 von 61 01.06.2016 10:18

Page 38: Mit dem API ins CMS

WO?WO?resource componentresource-bundleresource-rest-bundle

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

38 von 61 01.06.2016 10:18

Page 39: Mit dem API ins CMS

EDIT CONTENT?EDIT CONTENT?

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

39 von 61 01.06.2016 10:18

Page 40: Mit dem API ins CMS

SONATASONATA

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

40 von 61 01.06.2016 10:18

Page 41: Mit dem API ins CMS

FUTUREFUTURE

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

41 von 61 01.06.2016 10:18

Page 42: Mit dem API ins CMS

CONTENT-BUNDLECONTENT-BUNDLE

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

42 von 61 01.06.2016 10:18

Page 43: Mit dem API ins CMS

WHY?WHY?

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

43 von 61 01.06.2016 10:18

Page 44: Mit dem API ins CMS

CONTENTCONTENT/cms/content/demo/controller

ROUTEROUTE/cms/routes/demo/controller

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

44 von 61 01.06.2016 10:18

Page 45: Mit dem API ins CMS

GET /demo/controller HTTP/1.1Host: 127.0.0.1:8080

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

45 von 61 01.06.2016 10:18

Page 46: Mit dem API ins CMS

GET /demo/controller HTTP/1.1 Host: 127.0.0.1:8080 Accept: application/json

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

46 von 61 01.06.2016 10:18

Page 47: Mit dem API ins CMS

{ "cmfMainContent": { "id": "/cms/content/demo_controller", "title": "Explicit Controller", "body": "<p>This content is routed through an explicit controller that can do addi "name": "demo_controller" }, "info": "This page is rendered by <code>AppBundle\\Controller\\ContentController::spec}

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

47 von 61 01.06.2016 10:18

Page 48: Mit dem API ins CMS

CONTENTCONTENT/cms/content/demo/controller

ROUTESROUTES/cms/routes/demo/controller

/cms/routes/services/show-controller

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

48 von 61 01.06.2016 10:18

Page 49: Mit dem API ins CMS

GET /services/show-controller HTTP/1.1Host: 127.0.0.1:8080Accept: application/json

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

49 von 61 01.06.2016 10:18

Page 50: Mit dem API ins CMS

WAS FEHLT?WAS FEHLT?

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

50 von 61 01.06.2016 10:18

Page 51: Mit dem API ins CMS

WRITE, EDIT, DELETEWRITE, EDIT, DELETE

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

51 von 61 01.06.2016 10:18

Page 52: Mit dem API ins CMS

UNTERSCHIEDUNTERSCHIED

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

52 von 61 01.06.2016 10:18

Page 53: Mit dem API ins CMS

ROUTINGROUTING

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

53 von 61 01.06.2016 10:18

Page 54: Mit dem API ins CMS

cmf_routing: chain: routers_by_id: cmf_routing.dynamic_router: 20 router.default: 100 dynamic: route_collection_limit: 10 controllers_by_type: demo_type: app.content_controller:typeAction controllers_by_class: DemoClassContent: app.content_controller:classAction

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

54 von 61 01.06.2016 10:18

Page 55: Mit dem API ins CMS

USE CASESUSE CASES

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

55 von 61 01.06.2016 10:18

Page 56: Mit dem API ins CMS

RESOURCE APIRESOURCE APIAdmins z.B. TreeBrowserMobile Apps

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

56 von 61 01.06.2016 10:18

Page 57: Mit dem API ins CMS

CONTENT APICONTENT APIFrontend EditorenMobile AppsNicht CMS

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

57 von 61 01.06.2016 10:18

Page 58: Mit dem API ins CMS

QUESTIONS?QUESTIONS?Ask Now!Twitter: @ElectricMaxxxMail: Maximilian.Berghoff@may�ower.de

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

58 von 61 01.06.2016 10:18

Page 59: Mit dem API ins CMS

LINKSLINKSresource componentresource-bundleresource-rest-bundlecontent-bundleSandbox - GithubSymfony-CMFPuli

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

59 von 61 01.06.2016 10:18

Page 60: Mit dem API ins CMS

THANK YOU!THANK YOU!

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

60 von 61 01.06.2016 10:18

Page 61: Mit dem API ins CMS

< <

Mit der API ins CMS http://localhost:8000/RestCMS/?print-pdf#/

61 von 61 01.06.2016 10:18