public void handleRequest()

in frontend/server/src/main/java/org/pytorch/serve/http/api/rest/InferenceRequestHandler.java [52:105]


    public void handleRequest(
            ChannelHandlerContext ctx,
            FullHttpRequest req,
            QueryStringDecoder decoder,
            String[] segments)
            throws ModelException, DownloadArchiveException, WorkflowException {
        if (isInferenceReq(segments)) {
            if (endpointMap.getOrDefault(segments[1], null) != null) {
                handleCustomEndpoint(ctx, req, segments, decoder);
            } else {
                switch (segments[1]) {
                    case "ping":
                        Runnable r =
                                () -> {
                                    String response = ApiUtils.getWorkerStatus();
                                    NettyUtils.sendJsonResponse(
                                            ctx,
                                            new StatusResponse(
                                                    response, HttpURLConnection.HTTP_OK));
                                };
                        ApiUtils.getTorchServeHealth(r);
                        break;
                    case "models":
                    case "invocations":
                        validatePredictionsEndpoint(segments);
                        handleInvocations(ctx, req, decoder, segments);
                        break;
                    case "predictions":
                        handlePredictions(ctx, req, segments, false);
                        break;
                    case "explanations":
                        handlePredictions(ctx, req, segments, true);
                        break;
                    default:
                        handleLegacyPredict(ctx, req, decoder, segments);
                        break;
                }
            }
        } else if (isKFV1InferenceReq(segments)) {
            if (segments[3].contains(":predict")) {
                handleKFV1Predictions(ctx, req, segments, false);
            } else if (segments[3].contains(":explain")) {
                handleKFV1Predictions(ctx, req, segments, true);
            }
        } else if (isKFV2InferenceReq(segments)) {
            if (segments[4].equals("infer")) {
                handleKFV2Predictions(ctx, req, segments, false);
            } else if (segments[4].equals("explain")) {
                handleKFV2Predictions(ctx, req, segments, true);
            }
        } else {
            chain.handleRequest(ctx, req, decoder, segments);
        }
    }