-
Notifications
You must be signed in to change notification settings - Fork 128
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Koop Roadmap for 2022-2023 #386
Comments
For services with a large number of layers, support for arbitrary folder depth would be very useful. For example:
Currently with the
If you get rid of the
Then using the third URL as an example, Thanks for providing this roadmap, this is all helpful planning our project moving forward. |
Hi @schmidtk! Thanks very much posting here. I'm pretty sure you can't delimit a param with
vs
|
This would be for organizational purposes, so we can structure our services in folders. Here's an example from the ArcGIS Online sample server: The base service has a mix of folders and services to better organize all of the layers. If the URL pattern was changed to If the URL pattern was instead
The |
@schmidtk - thanks very much for elaborating. This is an interesting idea. I'm not quite sure what it would mean for the way Koop handles routing, I'll need to explore the internals and try it out. But it could be great! Looking forward to trying this out. FYI, changing the route params is a stretch goal for the next year, so it might be a bit before any changes on it (at least from our side) move forward. |
Great, thanks for your consideration on this. I'm not sure what impacts this might have in the core Koop code, but I did do a quick smoke test with the Elasticsearch provider to see how the current URL's could be maintained with the suggested The route is handled in this block in the provider model: With the new pattern, the param assignments would change to: // This was previously the :host param.
const esId = req.params.id;
// This value includes the leading slash, stripping it for parity with the old code.
const serviceName = req.params[0].replace('/^\//', ''); That assumes the current two level structure ( I tested this out with our current URL's and everything worked great with the FeatureServer/Info/Layers/Layer Info/Query endpoints. |
@rgwozdz as I play around with getting the related layers working with a custom provider it feels like returning massive metadata and other "configuration" data on the geojson object is getting to be a bit cludgy. Maybe it would be possible to add some additional functions on the Model class for that. Something like getLayersConfiguration(host, id) or something like that where we could return the static configuration about the layers. IMO that would also provide a cleaner way of generating the data for the /layers rest endpoint |
Closing this as we move past this period. I have moved comments to their own issues and tagged them as roadmap candidates. Any enhancements for consideration on the coming year's roadmap should be added as enhancement issues. |
Hello Koop User Community! I'd like to shared some proposed changes with you. They are listed below in order of expected implementation. Please comment with any feedback or suggestions. It's our hope to start implementing these changes soon.
Packages will include:
koop-core
koop-logger
koop-cache-memory
koop-output-geoservices
feature-server
winnow
The monorepo approach helps alleviate existing pain points that include:
Note: Package versions will use individually-based version numbers, continuous with version numbers they currently use in independent repos. However, we plan to npm publish all packages under the
@koopjs
npm org.These dependencies currently use console.log while other Koop core-dependencies and many plugins leverage the Koop logger. Using koop logger will allow better management of log messages (debug, warn, info, error), help ensure log visibility, and provide formatting required by some deployments.
rest/services
)Early versions of output-geoservices did not include routes with the
rest/services
fragment of the URL path. However, some ArcGIS clients require service URLs to include it to work properly. An additional set of routes withrest/services
were added to address this issue, but the old routes without that fragment were maintained to avoid a breaking change. While we avoided a breaking change, it has lead to confusion on which routes to use and question about why some routes won't work with clients like AGO.Note: This change will break any existing implementations that leverage routes without the
rest/services
fragment.Add code coverage tooling to all monorepo packages
Remove generic
datasets
provider and ship in separate pluginKoop ships with a set of generic "datasets" provider with custom endpoints that allow users to add and retrieve ad hoc JSON to the koop-cache. It's likely not used very often, and could be a source of memory problems if abused. This provider should be separated and moved to its own plugin repository and therefore installed only when needed by Koop developers.
The existing Koop-provider specification allows for the configuration of two route parameters, hosts and id. In the early development of Koop, hosts was meant to contain information to help target a remote API (maybe a service hostname or route), while id was meant to contain information the help target a specific resource on a remote API. However, such definitions are not always applicable to a given provider, so in reality these are just two optional and generic route parameters. In summary, having two generic route parameters is often unnecessary, creates route-building complications, and adds usage confusion (e.g., what do I use hosts for?). A single generic parameter is sufficient, as it can be a delimited string that hold multiple pieces of information.
We will:
The text was updated successfully, but these errors were encountered: