Yandex Cloud
Search
Contact UsGet started
  • Blog
  • Pricing
  • Documentation
  • All Services
  • System Status
    • Featured
    • Infrastructure & Network
    • Data Platform
    • Containers
    • Developer tools
    • Serverless
    • Security
    • Monitoring & Resources
    • ML & AI
    • Business tools
  • All Solutions
    • By industry
    • By use case
    • Economics and Pricing
    • Security
    • Technical Support
    • Customer Stories
    • Gateway to Russia
    • Cloud for Startups
    • Education and Science
  • Blog
  • Pricing
  • Documentation
Yandex project
© 2025 Yandex.Cloud LLC
Yandex Cloud Functions
  • Comparison with other Yandex Cloud services
    • Overview
      • Overview
      • Function interface
      • YcFunction interface
      • HttpServlet class
      • Spring Boot
    • Managing dependencies
    • Request handler
    • Invocation context
    • Logging
    • Handling errors
    • Using the SDK
  • Tools
  • Pricing policy
  • Access management
  • Terraform reference
  • Monitoring metrics
  • Audit Trails events
  • Release notes
  • FAQ

In this article:

  • Examples
  • HTTP request structure output
  • Parsing an HTTP request
  1. Developing in Java
  2. Programming model
  3. Function interface

Using the Function interface to set a handler function in Java

Written by
Yandex Cloud
Updated at May 12, 2025
  • Examples
    • HTTP request structure output
    • Parsing an HTTP request

You can set a handler function in Java by implementing the Function interface.

Warning

You should specify both values for the Function type parameters: the first one being the input argument type and the second one, the type of the returned value.

Example of a valid handler:

import java.util.function.Function;

public class Handler implements Function<Integer, String> {
  @Override
  public String apply(Integer i) {
    return String.valueOf(i);
  }
}

Examples of invalid handlers:

import java.util.function.Function;
// Function has only one parameter type specified
// Handler should not have any type parameters (see the handler requirements)
public class Handler<T> implements Function<T, Integer> {
  @Override
  public Integer apply(T i) {
    return 2;
  }
}
import java.util.function.Function;
// Function has neither parameter type specified
public class Handler implements Function {
  @Override
  public Object apply(Object i) {
    return i;
  }
}

You can use any classes as input and return types.

Note

Fields of these classes may have any access modifiers. If a field is non-public, writing getter/setter methods for it is optional.

ExamplesExamples

HTTP request structure outputHTTP request structure output

The following function receives a request with two fields (a string and a number) as an input and returns a formatted string with the data received.

Warning

To invoke the function, use the Yandex Cloud CLI or an HTTP request with the ?integration=raw parameter.

Request.java file:

public class Request {
  public String message;
  public int number;
}

Handler.java file:

import java.util.function.Function;

public class Handler implements Function<Request, String> {

  @Override
  public String apply(Request r) {
    // at this stage, the r variable already stores the parsed query
    return String.format("Message is %s, number is %d", r.message, r.number);
  }
}

Example of input data:

{
  "message": "Hello",
  "number": 24
}

Returned string:

Message is Hello, number is 24

Parsing an HTTP requestParsing an HTTP request

The function is invoked using an HTTP request with the username, logs the request method and body, and returns a greeting.

Warning

Do not use the ?integration=raw parameter to invoke this function. If you do, the function will not get any data about the original request's methods, headers, or parameters.

Note

In this example, to interpret JSON, we use a third-party library named org.json.

The Request.java file:

public class Request {
  public String httpMethod;
  public String body;
}

The Response.java file:

public class Response {
  public int statusCode;
  public String body;

  public Response(int statusCode, String body) {
    this.statusCode = statusCode;
    this.body = body;
  }
}

Handler.java:

import java.util.function.Function;
import org.json.*;

public class Handler implements Function<Request, Response> {

  @Override
  public Response apply(Request r) {
    var method = r.httpMethod;
    var body = r.body;
    System.out.println(String.format("%s, %s", method, body));

    var jsonObject = new JSONObject(body);
    // here, the "name" parameter is obtained from the request body
    // if you do not provide it, an error will be thrown
    var name = jsonObject.getString("name");
    return new Response(200, String.format("Hello, %s", name));
  }
}

Example of input data (the POST method):

{
  "name": "Anonymous"
}

The log will contain the following:

POST, { "name": "Anonymous" }

Response returned:

Hello, Anonymous

Was the article helpful?

Previous
Overview
Next
YcFunction interface
Yandex project
© 2025 Yandex.Cloud LLC