Wiki source code of ERRest Boot Camp
Last modified by Pascal Robert on 2012/05/16 19:16
Hide last authors
author | version | line-number | content |
---|---|---|---|
![]() |
8.1 | 1 | * What is REST |
2 | ** Consistent URLs | ||
![]() |
13.1 | 3 | *** The goal is to have URLs that you can guess. |
4 | *** GitHub is a good case (http vs git protocols, paths, etc.) | ||
![]() |
8.1 | 5 | ** Stateless |
![]() |
13.1 | 6 | *** You can use sessions, but almost all client frameworks are stateless |
![]() |
8.1 | 7 | ** Using HTTP protocol to full extend (methods, cache, status codes, headers, redirections) |
![]() |
13.1 | 8 | *** Status codes |
9 | *** Verbs | ||
10 | *** Headers | ||
![]() |
8.1 | 11 | ** Multiple representations of same object, but only one URL for object |
12 | ** HATEOAS mention | ||
![]() |
13.1 | 13 | *** Google Docs, CMIS, Atom Publishing examples |
14 | * Basic ERRest concepts | ||
15 | ** routes | ||
16 | *** URLs | ||
17 | ** controllers | ||
18 | ** delegates | ||
19 | ** key filters | ||
20 | *** filter what going's in and out | ||
![]() |
8.1 | 21 | * Using an existing model and explaining how it works |
22 | ** BlogEntry | ||
23 | *** title | ||
24 | *** content | ||
25 | *** dateInserted | ||
26 | *** dateModified | ||
27 | *** author | ||
28 | ** BlogAuthor | ||
![]() |
13.1 | 29 | *** firstName |
30 | *** lastName | ||
![]() |
8.1 | 31 | *** password |
32 | |||
33 | *** entries | ||
![]() |
13.1 | 34 | ** BlogCategory |
35 | *** entries | ||
36 | *** name | ||
![]() |
8.1 | 37 | * Basic REST routes (JSON) |
38 | ** adding a migration to create the admin user | ||
39 | ** adding a BlogAuthor user | ||
40 | ** adding a BlogEntry | ||
41 | ** getting a BlogEntry | ||
42 | ** modifying a BlogEntry | ||
43 | ** deleting a blogEntry | ||
44 | ** viewing a author and its posts (in XML) | ||
45 | * HTML REST routes | ||
46 | ** explain how URL are differents | ||
47 | ** automatic HTML routing vs manual | ||
48 | ** listing blog posts | ||
49 | ** listing authors | ||
50 | ** batching and sorting | ||
51 | * Better names: entity and attribute alias | ||
![]() |
13.1 | 52 | * Having a fake primary key in a REST context (moving from ID to unique title) |
![]() |
8.1 | 53 | * Handling status codes |
54 | ** 200&201 | ||
55 | ** 404&410 | ||
56 | *** Returning 410 for entries that were deleted | ||
57 | ** 405 | ||
58 | ** 50x | ||
59 | ** 401&403 | ||
60 | *** when trying to create blog entry without logged user | ||
61 | * Redirections | ||
62 | ** How to do them, codes 301 and 302 differences | ||
63 | * Adding headers to response | ||
64 | * Adding caching to the blog | ||
65 | * Adding non-EO support | ||
![]() |
13.1 | 66 | * Adding keys for non-model attributes ("fullName") |
![]() |
8.1 | 67 | * Date formats |
![]() |
11.1 | 68 | ** er.rest.dateFormat |
69 | ** er.rest.timestampFormat | ||
70 | ** er.rest.rfcDateFormat | ||
![]() |
8.1 | 71 | * JSON Schema |
72 | |||
![]() |
14.1 | 73 | Talking about the problem of objectOfEntityWithID and ERXDatabaseContextDelegate.ObjectNotAvailableException |
![]() |
13.1 | 74 | |
![]() |
4.1 | 75 | RestContext |
![]() |
14.1 | 76 | Properties |
77 | Adding new format | ||
78 | Security | ||
79 | strictMode | ||
80 | Workflow |