From 91048a49b47168a137283f1d58fc6d300081fa2f Mon Sep 17 00:00:00 2001 From: Gopinath Langote Date: Thu, 14 Sep 2017 23:07:40 +0530 Subject: [PATCH] #631 - Partial Response : Add Readme. --- partial-response/README.md | 29 ++++++++++++++++++ partial-response/etc/partial-response.urm.png | Bin 0 -> 27781 bytes 2 files changed, 29 insertions(+) create mode 100644 partial-response/README.md create mode 100644 partial-response/etc/partial-response.urm.png diff --git a/partial-response/README.md b/partial-response/README.md new file mode 100644 index 000000000..5d03cb359 --- /dev/null +++ b/partial-response/README.md @@ -0,0 +1,29 @@ +--- +layout: pattern +title: Partial Response +folder: partial-response +permalink: /patterns/partial-response/ +categories: Architectural +tags: + - Java + - KISS + - YAGNI + - Difficulty-Beginner +--- + +## Intent +Send partial response from server to client on need basis. Client will specify the the fields +that it need to server, instead of serving all details for resource. + +![alt text](./etc/partial-response.urm.png "partial-response") + +## Applicability +Use the Partial Response pattern when + +* Client need only subset of data from resource. +* To avoid too much data transfer over wire + +## Credits + +* [Common Design Patterns](https://cloud.google.com/apis/design/design_patterns) +* [Partial Response in RESTful API Design](http://yaoganglian.com/2013/07/01/partial-response/) diff --git a/partial-response/etc/partial-response.urm.png b/partial-response/etc/partial-response.urm.png new file mode 100644 index 0000000000000000000000000000000000000000..17dbd5f1b60df743f40c23a87deb70bc8d952806 GIT binary patch literal 27781 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 jzk`|ok%ip