// Package http provides a set of HTTP Cloud Functions samples.
package http
import (
"fmt"
"net/http"
"time"
)
var urlString = "https://example.com"
// client is used to make HTTP requests with a 10 second timeout.
// http.Clients should be reused instead of created as needed.
var client = &http.Client{
Timeout: 10 * time.Second,
}
// MakeRequest is an example of making an HTTP request. MakeRequest uses a
// single http.Client for all requests to take advantage of connection
// pooling and caching. See https://godoc.org/net/http#Client.
func MakeRequest(w http.ResponseWriter, r *http.Request) {
resp, err := client.Get(urlString)
if err != nil {
http.Error(w, "Error making request", http.StatusInternalServerError)
return
}
if resp.StatusCode != http.StatusOK {
msg := fmt.Sprintf("Bad StatusCode: %d", resp.StatusCode)
http.Error(w, msg, http.StatusInternalServerError)
return
}
fmt.Fprintf(w, "ok")
}
import com.google.cloud.functions.HttpFunction;
import com.google.cloud.functions.HttpRequest;
import com.google.cloud.functions.HttpResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpResponse.BodyHandlers;
import java.time.Duration;
public class SendHttpRequest implements HttpFunction {
// Create a client with some reasonable defaults. This client can be reused for multiple requests.
// (java.net.httpClient also pools connections automatically by default.)
private static HttpClient client =
HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(10)).build();
@Override
public void service(HttpRequest request, HttpResponse response)
throws IOException, InterruptedException {
// Create a GET sendHttpRequest to "http://example.com"
String url = "http://example.com";
var getRequest = java.net.http.HttpRequest.newBuilder().uri(URI.create(url)).GET().build();
// Send the sendHttpRequest using the client
var getResponse = client.send(getRequest, BodyHandlers.ofString());
// Write the results to the output:
var writer = new PrintWriter(response.getWriter());
writer.printf("Received code '%s' from url '%s'.", getResponse.statusCode(), url);
}
}
import requests
# Create a global HTTP session (which provides connection pooling)
session = requests.Session()
def connection_pooling(request):
"""
HTTP Cloud Function that uses a connection pool to make HTTP requests.
Args:
request (flask.Request): The request object.
<http://flask.pocoo.org/docs/1.0/api/#flask.Request>
Returns:
The response text, or any set of values that can be turned into a
Response object using `make_response`
<http://flask.pocoo.org/docs/1.0/api/#flask.Flask.make_response>.
"""
# The URL to send the request to
url = 'http://example.com'
# Process the request
response = session.get(url)
response.raise_for_status()
return 'Success!'