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

Noble Paul commented on SOLR-7312:
----------------------------------

bq.How about changing the API to actually conform to RESTful?

The choice was deliberate. pure REST was inconvenient and inefficient for those 
commands . We needed bulk commands

* editing the schema/config would result in core reload and doing one at a time 
means more reloads
* We need to ensure that the editing process is transactional. If I wish to do 
10 operations all 10 must either succeed or fail. Partial success is not useful
* Using REST means different payload for unix, windows , web interface
* REST means you are interlacing shell commands in your payload "curl etc". 
Which means someone really has to verify if you are performing anything risky 
because mostly the ops run commands as {{su}}

To be honest the REST paradigm is terrible from an ops point of view . We 
should follow standards only if it helps our users


> "REST" API is not REST
> ----------------------
>
>                 Key: SOLR-7312
>                 URL: https://issues.apache.org/jira/browse/SOLR-7312
>             Project: Solr
>          Issue Type: Bug
>          Components: Server
>    Affects Versions: 5.0
>            Reporter: Mark Haase
>            Assignee: Noble Paul
>
> The documentation refers to a "REST" API over and over, and yet I don't see a 
> REST API. I see an HTTP API but not a REST API. Here are a few things the 
> HTTP API does that are not RESTful:
> * Offers RPC verbs instead of resources/nouns. (E.g. schema API has commands 
> like "add-field", "add-copy-field", etc.)
> * Tunnels non-idempotent requests (like creating a core) through idempotent 
> HTTP verb (GET).
> * Tunnels deletes through HTTP GET.
> * PUT/POST confusion, POST used to update a named resource, such as the Blob 
> API.
> * Returns `200 OK` HTTP code even when the command fails. (Try adding a field 
> to your schema that already exists. You get `200 OK` and an error message 
> hidden in the payload. Try calling a collections API when you're using 
> non-cloud mode: `200 OK` and an error message in the payload. Gah.)
> * Does not provide link relations.
> * HTTP status line contains a JSON payload (!) and no 'Content-Type' header 
> for some failed commands, like `curl -X DELETE 
> http://solr:8983/solr/admin/cores/foo`
> * Content negotiation is done via query parameter (`wt=json`), instead of 
> `Accept` header.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to