Flutter – 매개변수와 함께 Google Cloud Functions 사용

14128 단어 serverlessgcpflutter
the previous blog post에서 Firebase 없이 Google Cloud 함수를 호출하는 방법을 설명합니다. 그러나 유일한 옵션은 함수를 호출하는 것이었습니다. 대부분의 경우 더 복잡한 기능이 필요합니다. 이 블로그 게시물에서는 Google Cloud 함수에 정보를 전달하는 방법을 설명합니다. 이는 여러 가지 방법으로 수행할 수 있습니다.

Google 클라우드 기능 만들기



먼저 Google Cloud Function을 업데이트하겠습니다. 이 함수는 변수를 처리해야 합니다. 이러한 변수를 사용하는 두 가지 쉬운 방법이 있습니다. 쿼리 매개변수 또는 HTTP 호출 본문을 통해 값을 전달할 수 있습니다. 물론 HTTP 호출 본문을 통해 정보를 전달할 때 호출은 GET 호출이 아닌 POST 호출이 되어야 합니다.

    // Check URL parameters for "name" field
    // "world" is the default value
    String name = request.getFirstQueryParameter("name").orElse("world");


getFirstQueryParameter를 사용하여 요청의 쿼리 매개변수를 검색할 수 있습니다. 본문을 읽으려면 요청 작성자를 가져와야 합니다. 이를 파싱하는 한 가지 방법은 Google GSON 라이브러리를 사용하는 것입니다. 동일한 방식을 사용하려는 경우 다음 종속성을 추가해야 합니다.

    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.8.8</version>
    </dependency>


이제 요청 본문을 구문 분석하고 여기에서 변수에 액세스할 수 있습니다.

package com.example;

import com.google.cloud.functions.HttpFunction;
import com.google.cloud.functions.HttpRequest;
import com.google.cloud.functions.HttpResponse;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.logging.Logger;

public class Example implements HttpFunction {
  private static final Logger logger = Logger.getLogger(Example.class.getName());

  private static final Gson gson = new Gson();

  @Override
  public void service(HttpRequest request, HttpResponse response)
      throws IOException {
    String name = request.getFirstQueryParameter("name").orElse("world");

    try {
      JsonElement requestParsed = gson.fromJson(request.getReader(), JsonElement.class);
      JsonObject requestJson = null;

      if (requestParsed != null && requestParsed.isJsonObject()) {
        requestJson = requestParsed.getAsJsonObject();
      }

      if (requestJson != null && requestJson.has("name")) {
        name = requestJson.get("name").getAsString();
      }
    } catch (JsonParseException e) {
      logger.severe("Error parsing JSON: " + e.getMessage());
    }

    var writer = new PrintWriter(response.getWriter());
    writer.printf("Hello %s!", name);
  }
}


Google Cloud Platform에서 이 기능을 배포하는 방법에 대한 자세한 설명을 보려면 여기의 지침을 따르십시오.

Flutter 애플리케이션 업데이트



이 설명은 previous blog post의 Flutter Application으로 시작합니다. 블로그 게시물에서는 HTTP 패키지로 Google Cloud 함수를 호출하는 방법을 설명합니다. 이 애플리케이션은 Future와 함께 작동합니다. 따라서 결과는 HTTP 호출이 완료된 경우에만 표시됩니다. 다음은 HTTP 호출입니다.

import 'package:http/http.dart' as http;

Future<String> callCloudFunction() async {
  final response = await http
      .get(Uri.parse('insert-url-of-your-cloud-fuction'));
  if (response.statusCode == 200) {
    return response.body;
  } else {
    throw Exception('Failed to execute function');
  }
}


쿼리 매개변수로 함수를 호출하려면 해당 변수를 GET 요청 URL에 추가할 수 있습니다.

import 'package:http/http.dart' as http;

Future<String> callCloudFunction() async {
  final response = await http
      .get(Uri.parse('insert-url-of-your-cloud-fuction?name=Bart'));
  if (response.statusCode == 200) {
    return response.body;
  } else {
    throw Exception('Failed to execute function');
  }
}


Google Cloud Function은 요청 본문도 살펴봅니다. HTTP 호출에 본문을 포함하려면 GET 메서드를 POST 메서드로 변환해야 합니다. 이제 다음과 같은 방식으로 함수가 예상하는 본문을 보낼 수 있습니다.

import 'dart:convert';
import 'package:http/http.dart' as http;

Future<String> callCloudFunction() async {
  final response = await http.post(Uri.parse('insert your url here'),
      body: jsonEncode(<String, String>{
        'name': 'Bart',
      }));
  if (response.statusCode == 200) {
    return response.body;
  } else {
    throw Exception('Failed to execute function');
  }
}


이 단계는 변수를 사용하여 클라우드 함수를 호출하는 데 필요한 전부입니다! 이 예제의 코드는 여기Github에서 사용할 수 있습니다. 여전히 질문, 의견, 제안 또는 언급이 있으면 알려주세요!

게시물 Flutter – Using Google Cloud Functions with parametersBarttje에 처음 나타났습니다.

좋은 웹페이지 즐겨찾기