Serving multiple datasets#
Xpublish also lets you serve multiple datasets via one FastAPI application. You
provide a mapping (dictionary) when creating a
Rest instance, e.g.,
ds = xr.tutorial.open_dataset("air_temperature")
ds2 = xr.tutorial.open_dataset("rasm")
rest_collection = xpublish.Rest({"air_temperature": ds, "rasm": ds2})
rest_collection.serve()
When multiple datasets are given, all dataset-specific API endpoint URLs have
the /datasets/{dataset_id} prefix. For example:
/datasets/rasm/inforeturns information about therasmdataset/datasets/invalid_dataset_id/inforeturns a 404 HTTP error
The application also has one more API endpoint:
/datasets: returns the list of the ids (keys) of all published datasets
Note that custom routes work for multiple datasets as well as for a single dataset. No code change is required. Taking the example previously,
rest_collection = xpublish.Rest(
{"air_temperature": ds, "rasm": ds2}, routers=[myrouter]
)
rest_collection.serve()
The following URLs should return expected results:
/datasets/air_temperature/air/mean/datasets/rasm/Tair/mean