[ 
https://issues.apache.org/jira/browse/SOLR-15781?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17563238#comment-17563238
 ] 

Jason Gerlowski commented on SOLR-15781:
----------------------------------------

Following some preliminary discussion on the [mailing 
list|https://lists.apache.org/thread/jbdzvlsxrw46mr6qz3xy2tkjc8d93okb], I've 
put together a [spreadsheet 
|https://docs.google.com/spreadsheets/d/1HAoBBFPpSiT8mJmgNZKkZAPwfCfPvlc08m5jz3fQBpA/edit?usp=sharing]of
 specific changes we could make to our v2 APIs to push them in a more REST-ful 
direction.

The spreadsheet uses a bit of color coding to make things a bit more readable. 
Most important are the green sections, which highlight a proposed deviation 
from the current v2 API. Of secondary interest are a few lines of light blue, 
which I've used to indicate APIs missing from both v1 and v2, but that would be 
useful eventually to round out and add some uniformity to each REST "resource". 
I'm not proposing these now - I just thought they were helpful to show the 
additional uniformity the API could have down the road if we decide to shore up 
some of those gaps.

*Why REST?*

REST in particular has come up a good bit in previous discussions as being more 
in keeping with best practices today, and being easier for users to pick up: 
both big wins for Solr. REST-ful APIs are also much easier to create OpenAPI 
documentation for, which opens some interesting doors for us like allowing us 
to have a Swagger UI exposing most/all endpoints, or even auto-generating 
request/response libraries for Java and other languages.

The devil is absolutely in the details with this sort of thing, so I'm eager 
for feedback on the specific proposals in the spreadsheet. But I think it makes 
sense to call out a few trends from the spreadsheet for particular attention 
here:
 * As might be expected in a move towards REST-fulness, the hypothetical v2 API 
in the spreadsheet relies on a wider range of path segments than the current v2 
API uses.
 * The spreadsheet suggests very few changes to "document-level" APIs, like 
/select, /tag, /export, /stream, etc. In part because they're harder to fit 
into the REST model, and in part because users can configure them to be exposed 
at whatever paths they want.
 ** I can imagine a more REST-ful approach that fits some of these endpoints 
(e.g. {{POST .../collName/documents}} to index documents, {{GET 
.../collName/documents/docId}} to real-time-get, etc.), but it doesn't fit 
everything and, again, this is complicated somewhat since users can define many 
of these request handlers at their discretion.
 * Some commands (particularly some of the former "collection-admin", 
"core-admin", and "replication" APIs) are hard to fit into a resource-first 
model. To handle this, the spreadsheet changes the APIs to be grouped under 
whatever resource they're most relevant to, on a special {{/commands}} subpath. 
So core reload and unload would live at {{{}POST 
/api/cores/coreName/commands{}}}, collection reload would live at {{{}POST 
/api/collections/collName/commands{}}}, etc.

Anyways, excited to hear what everyone thinks!

> Cosmetic and consistency improvements to v2 API
> -----------------------------------------------
>
>                 Key: SOLR-15781
>                 URL: https://issues.apache.org/jira/browse/SOLR-15781
>             Project: Solr
>          Issue Type: Improvement
>          Components: v2 API
>            Reporter: Jason Gerlowski
>            Priority: Major
>              Labels: V2
>
> While the v2 API is in many ways an improvement over v1 in terms of 
> readability and API best practices, it still has a lot of room for 
> improvement.  The recent "exper
> imental" designation for v2 opens the door to pursuing many of these 
> improvements. 
> This ticket is intended as an umbrella to track resolution of some of the 
> known warts in the current v2 API and some of the improvements that can be 
> made in terms of being more RESTful, etc.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to