diff options
Diffstat (limited to 'html/processed-views/server-client-contract.md')
| -rw-r--r-- | html/processed-views/server-client-contract.md | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/html/processed-views/server-client-contract.md b/html/processed-views/server-client-contract.md new file mode 100644 index 0000000..325e6e5 --- /dev/null +++ b/html/processed-views/server-client-contract.md @@ -0,0 +1,59 @@ +## Server-Client contract + +Servers can serve content in 2 major formats: text/html and json (and links to many more content types) + +Clients/browsers can handle content in many more ways; they can just passive render the content or they +can grow their proccessing and logic to become a smart engine or heavy application. + +These 2 factors need to cooperate smoothly. So, it is necessary to pre-define: +- what a server serves +- what a borwser/client procceses + +This contract: +- allows development sharing in separate teams +- sets clear rules for each development group +- helps developing an ecosystem of reliable tools that can be reused and extended +- helps to detect malfunctions and apply fixes and optimizations +- makes the project manageable and scalable + + +--- + + +## The Contract + +A cotract is recommended to include as less as possible rules; + +Of course there might be page-types that need special handling; Such pages are + +- product pages + +- product categories pages + + + +### Rule #1: Default rule + + +On the server side: + +- Server serves main content in html format; all non-user-based content is constucted and served in html format + +On the client side: + +- Client/browser requests the user-based content via ajax; (*still to be determinid the format of the replies*) + + + +### Product Pages + + +apache: +serves product -> product: { id, title, prices:{ s1:{..}, s2:{..}, ... }, images:{...} } + +browser: +check cookie(store) = s# +-> use product.prices.s# to draw prices + + +--- |
