Class RestController

java.lang.Object
org.elasticsearch.rest.RestController
All Implemented Interfaces:
HttpServerTransport.Dispatcher

public class RestController extends Object implements HttpServerTransport.Dispatcher
  • Constructor Details

  • Method Details

    • getApiProtections

      public ServerlessApiProtections getApiProtections()
    • registerAsDeprecatedHandler

      protected void registerAsDeprecatedHandler(RestRequest.Method method, String path, RestApiVersion version, RestHandler handler, String deprecationMessage)
      Registers a REST handler to be executed when the provided method and path match the request.
      Parameters:
      method - GET, POST, etc.
      path - Path to handle (e.g. "/{index}/{type}/_bulk")
      version - API version to handle (e.g. RestApiVersion.V_8)
      handler - The handler to actually execute
      deprecationMessage - The message to log and send as a header in the response
    • registerAsDeprecatedHandler

      protected void registerAsDeprecatedHandler(RestRequest.Method method, String path, RestApiVersion version, RestHandler handler, String deprecationMessage, @Nullable org.apache.logging.log4j.Level deprecationLevel)
      Registers a REST handler to be executed when the provided method and path match the request.
      Parameters:
      method - GET, POST, etc.
      path - Path to handle (e.g. "/{index}/{type}/_bulk")
      version - API version to handle (e.g. RestApiVersion.V_8)
      handler - The handler to actually execute
      deprecationMessage - The message to log and send as a header in the response
      deprecationLevel - The deprecation log level to use for the deprecation warning, either WARN or CRITICAL
    • registerAsReplacedHandler

      protected void registerAsReplacedHandler(RestRequest.Method method, String path, RestApiVersion version, RestHandler handler, RestRequest.Method replacedMethod, String replacedPath, RestApiVersion replacedVersion)
      Registers a REST handler to be executed when the provided method and path match the request, or when provided with replacedMethod and replacedPath. Expected usage:
      
       // remove deprecation in next major release
       controller.registerAsDeprecatedHandler(POST, "/_forcemerge", RestApiVersion.V_8, someHandler,
                                              POST, "/_optimize", RestApiVersion.V_7);
       controller.registerAsDeprecatedHandler(POST, "/{index}/_forcemerge", RestApiVersion.V_8, someHandler,
                                              POST, "/{index}/_optimize", RestApiVersion.V_7);
       

      The registered REST handler (method with path) is a normal REST handler that is not deprecated and it is replacing the deprecated REST handler (replacedMethod with replacedPath) that is using the same handler.

      Deprecated REST handlers without a direct replacement should be deprecated directly using registerAsDeprecatedHandler(org.elasticsearch.rest.RestRequest.Method, java.lang.String, org.elasticsearch.core.RestApiVersion, org.elasticsearch.rest.RestHandler, java.lang.String) and a specific message.

      Parameters:
      method - GET, POST, etc.
      path - Path to handle (e.g. "/_forcemerge")
      version - API version to handle (e.g. RestApiVersion.V_8)
      handler - The handler to actually execute
      replacedMethod - GET, POST, etc.
      replacedPath - Replaced path to handle (e.g. "/_optimize")
      replacedVersion - Replaced API version to handle (e.g. RestApiVersion.V_7)
    • registerHandler

      protected void registerHandler(RestRequest.Method method, String path, RestApiVersion version, RestHandler handler)
      Registers a REST handler to be executed when one of the provided methods and path match the request.
      Parameters:
      method - GET, POST, etc.
      path - Path to handle (e.g. "/{index}/{type}/_bulk")
      version - API version to handle (e.g. RestApiVersion.V_8)
      handler - The handler to actually execute
    • registerHandler

      public void registerHandler(RestHandler.Route route, RestHandler handler)
    • registerHandler

      public void registerHandler(RestHandler handler)
      Registers a REST handler with the controller. The REST handler declares the method and path combinations.
    • dispatchRequest

      public void dispatchRequest(RestRequest request, RestChannel channel, ThreadContext threadContext)
      Description copied from interface: HttpServerTransport.Dispatcher
      Dispatches the RestRequest to the relevant request handler or responds to the given rest channel directly if the request can't be handled by any request handler.
      Specified by:
      dispatchRequest in interface HttpServerTransport.Dispatcher
      Parameters:
      request - the request to dispatch
      channel - the response channel of this request
      threadContext - the thread context
    • dispatchBadRequest

      public void dispatchBadRequest(RestChannel channel, ThreadContext threadContext, Throwable cause)
      Description copied from interface: HttpServerTransport.Dispatcher
      Dispatches a bad request. For example, if a request is malformed it will be dispatched via this method with the cause of the bad request.
      Specified by:
      dispatchBadRequest in interface HttpServerTransport.Dispatcher
      Parameters:
      channel - the response channel of this request
      threadContext - the thread context
      cause - the cause of the bad request
    • getStats

      public Map<String,HttpRouteStats> getStats()
      Specified by:
      getStats in interface HttpServerTransport.Dispatcher
    • validateRequest

      protected void validateRequest(RestRequest request, RestHandler handler, NodeClient client) throws ElasticsearchStatusException
      Validates that the request should be allowed. Throws an exception if the request should be rejected.
      Throws:
      ElasticsearchStatusException
    • getSearchUsageHolder

      public SearchUsageHolder getSearchUsageHolder()
      Returns the holder for search usage statistics, to be used to track search usage when parsing incoming search requests from the relevant REST endpoints. This is exposed for plugins that expose search functionalities which need to contribute to the search usage statistics.
    • handleBadRequest

      public static void handleBadRequest(String uri, RestRequest.Method method, RestChannel channel) throws IOException
      Handle a requests with no candidate handlers (return a 400 Bad Request error).
      Throws:
      IOException
    • handleServerlessRequestToProtectedResource

      public static void handleServerlessRequestToProtectedResource(String uri, RestRequest.Method method, RestChannel channel) throws IOException
      Throws:
      IOException