From 7076343338ae3439f3c86f01144818abe8c31978 Mon Sep 17 00:00:00 2001 From: George Halkiadakis Date: Sun, 12 Mar 2023 07:16:23 +0200 Subject: add container helpers; constuct public directory-tree --- html/processed-views/server-client-contract.md | 59 ++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 html/processed-views/server-client-contract.md (limited to 'html/processed-views/server-client-contract.md') 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 + + +--- -- cgit v1.2.3