From b35ffd4931212b7dc19082c38642657fd4b56993 Mon Sep 17 00:00:00 2001 From: Joe Nelson Date: Mon, 21 Nov 2016 23:04:06 -0800 Subject: [PATCH] First draft of resource embedding --- _static/film.png | Bin 0 -> 51752 bytes api.rst | 85 ++++++++++++++++++++++++++++++++++++++++++----- erd/film.er | 40 ++++++++++++++++++++++ 3 files changed, 116 insertions(+), 9 deletions(-) create mode 100644 _static/film.png create mode 100644 erd/film.er diff --git a/_static/film.png b/_static/film.png new file mode 100644 index 0000000000000000000000000000000000000000..99843b8709145b1f89bf14ea93b2134a9f2b4a2f GIT binary patch literal 51752 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 literal 0 HcmV?d00001 diff --git a/api.rst b/api.rst index e7bc52398..02817aeb4 100644 --- a/api.rst +++ b/api.rst @@ -13,8 +13,8 @@ There are no deeply/nested/routes. Each route provides OPTIONS, GET, POST, PATCH Why not provide nested routes? Many APIs allow nesting to retrieve related information, such as :code:`/films/1/director`. We offer a more flexible mechanism (inspired by GraphQL) to embed related information. It can handle one-to-many and many-to-many relationships. This is covered in the section about `Resource Embedding`_. -Filtering ---------- +Horizontal Filtering (Rows) +--------------------------- You can filter result rows by adding conditions on columns, each condition a query string parameter. For instance, to return people aged under 13 years old: @@ -54,6 +54,17 @@ To negate any operator, prefix it with :code:`not` like :code:`?a=not.eq.2`. For more complicated filters (such as those involving condition 1 OR condition 2) you will have to create a new view in the database. +Vertical Filtering (Columns) +---------------------------- + +When certain columns are wide (such as those holding binary data), it is more efficient for the server to withold them in a response. The client can specify which columns are required using the `select` parameter. + +.. code-block:: http + + GET /people?select=fname,age + +The default is `*`, meaning all columns. This value will become more important below in :ref:`Resource Embedding`_. + .. _computed_cols: Computed Columns @@ -107,12 +118,6 @@ If you care where nulls are sorted, add nullsfirst or nullslast: GET /people?order=age.desc.nullslast HTTP/1.1 -To order the embedded items, you need to specify the tree path for the order param like so. - -.. code-block:: http - - GET /projects?select=id,name,tasks{id,name}&order=id.asc&tasks.order=name.asc HTTP/1.1 - You can also use :ref:`computed_cols` to order the results, even though the computed columns will not appear in the output. Limits and Pagination @@ -219,7 +224,7 @@ This returns .. note:: - Many APIs distinguish plural and singular resources using a special nested URL convention e.g. `/stories` vs `/stories/1`. Why do we use `/stories?id=eq.1`? It is because a singlular resource is (for us) a row determined by a primary key, and primary keys can be compound (meaning defined across more than one column). The more familiar nested urls consider only a degenerate case of simple and overwhelmingly numeric primary keys. These so-called artificial keys are often introduced automatically by Object Relational Mapping libraries. + Many APIs distinguish plural and singular resources using a special nested URL convention e.g. `/stories` vs `/stories/1`. Why do we use `/stories?id=eq.1`? The answer is because a singlular resource is (for us) a row determined by a primary key, and primary keys can be compound (meaning defined across more than one column). The more familiar nested urls consider only a degenerate case of simple and overwhelmingly numeric primary keys. These so-called artificial keys are often introduced automatically by Object Relational Mapping libraries. Admittedly PostgREST could detect when there is an equality condition holding on all columns constituting the primary key and automatically convert to singular. However this could lead to a surprising change of format that breaks unwary client code just by filtering on an extra column. Instead we allow manually specifying singular vs plural to decouple that choice from the URL format. @@ -233,6 +238,68 @@ You can use a tool like `Swagger UI `_ to create Resource Embedding ================== +In addition to providing RESTful routes for each table and view, PostgREST allows related resources to be included together in a single API call. This reduces the need for multiple API requests. The server uses foreign keys to determine which tables and views can be returned together. For example, consider a database of films and their awards: + +.. image:: _static/film.png + +As seen above in `vertical_filtering`_ we can request the titles of all films like this: + +.. code-block:: http + + GET /films?select=title HTTP/1.1 + +This might return something like + +.. code-block:: json + + [ + { "title": "Workers Leaving The Lumière Factory In Lyon" }, + { "title": "The Dickson Experimental Sound Film" }, + { "title": "The Haunted Castle" } + ] + +However because a foreign key constraint exists between Films and Directors, we can request this information be included: + +.. code-block:: http + + GET /films?select=title,directors{last_name} HTTP/1.1 + +Which would return + +.. code-block:: json + + [ + { "title": "Workers Leaving The Lumière Factory In Lyon", + "directors": { + "last_name": "Lumière" + } + }, + { "title": "The Dickson Experimental Sound Film", + "directors": { + "last_name": "Dickson" + } + }, + { "title": "The Haunted Castle", + "directors": { + "last_name": "Méliès" + } + } + ] + +PostgREST can also detect relations going through join tables. Thus you can request the Actors for Films (which in this case finds the information through Roles). You can also reverse the direction of inclusion, asking for all Directories with each including the list of their Films. + +To order the embedded items, you need to specify the tree path in the order parameter. For instance + +.. code-block:: http + + GET /films?select=*,actors{*}&actors.order=last_name,first_name HTTP/1.1 + +Note this does not change the order of the Films, but of the list of Actors in each Film. + +.. note:: + + Whenever foreign key relations change in the database schema you must refresh PostgREST's schema cache to allow resource embedding to work properly. See the section :ref:`Schema Reloading`_. + Query Limitations ================= diff --git a/erd/film.er b/erd/film.er new file mode 100644 index 000000000..d19fdf61b --- /dev/null +++ b/erd/film.er @@ -0,0 +1,40 @@ +[Films] +*id ++director_id +title +year +rating +language + +[Directors] +*id +first_name +last_name + +[Actors] +*id +first_name +last_name + +[Roles] +*+film_id +*+actor_id +character + +[Competitions] +*id +name +year + +[Nominations] +*+competition_id +*+film_id +rank + +Roles *--1 Actors +Roles *--1 Films + +Nominations *--1 Competitions +Nominations *--1 Films + +Films *--1 Directors