Heim >Backend-Entwicklung >Golang >Wie kann ich HTML von der Go Lambda-Funktion zurückgeben?
PHP-Editor Shinichi wird diese Frage ausführlich beantworten, wenn er vorstellt, wie man HTML aus der Go Lambda-Funktion zurückgibt. Eine Go Lambda-Funktion ist eine Funktion, die in der Cloud ausgeführt wird und eine HTML-Seite zurückgibt, was für viele Webentwickler eine häufige Anforderung ist. In diesem Artikel erfahren Sie, wie Sie eine Lambda-Funktion in Go schreiben und sie als HTML-Seite zur Verwendung durch das Frontend zurückgeben. Mit der Anleitung dieses Artikels können Sie die Funktion zur Rückgabe von HTML aus einer Go-Lambda-Funktion problemlos implementieren. Fangen wir jetzt an!
Ich habe ein Go-Programm, das Wellenforminformationen im HTML-Format bereitstellt, wenn auf eine URL geklickt wird. Es läuft auf einer virtuellen Maschine mit Nginx-Reverse-Proxy.
Ich versuche, den Code nach AWS Lambda zu verschieben, aber ich habe Probleme zu verstehen, wie der HTML-Code ausgelöst und zurückgegeben wird.
Der Originalcode führt seine Logik aus und rendert die Daten als Vorlagen-HTML im folgenden Snippet.
func indexhandler(w http.responsewriter, r *http.request) { getweather() getsurf() checksurf(forecastgroup) p := codcallpage{title: "swell forecast", runtime: htmlrundate, dailyhtmldata: dailymatchingswells} codcalltemplateinit.execute(w, p) } func main() { http.handlefunc("/", indexhandler) http.listenandserve(":8000", nil) }
Ich glaube, ich brauche den Nginx-Proxy nicht mehr, sondern muss stattdessen die Lambda-Funktion aufrufen, um meinen Code auszuführen. Also habe ich den Code wie folgt geändert.
func indexhandler(w http.responsewriter, r *http.request) { getweather() getsurf() checksurf(forecastgroup) p := codcallpage{title: "swell forecast", runtime: htmlrundate, dailyhtmldata: dailymatchingswells} codcalltemplateinit.execute(w, p) } func handler(ctx context.context, request events.apigatewayproxyrequest) error { log.println("via lambda !!") http.handlefunc("/", indexhandler) } func main() { lambda.start(handler) }
Wenn ich den AWS-Test ausführe, verwendet die LBA-Funktion den Standard-JSON-Text.
{ "key1": "value1", "key2": "value2", "key3": "value3" }
Fehler bei Zeitüberschreitung:
{ "errorMessage": "2023-06-08T08:43:13.714Z d6e2acc0-b1da-4e92-820b-63f8f5050947 Task timed out after 15.01 seconds" }
Ich bin mir nicht sicher, ob die Lambda-Funktion den Test ignoriert oder ob die Funktion HTML nicht auf die richtige Weise zurückgibt oder ob die Lambda-Funktion JSON anstelle von HTML erwartet? Irgendwelche Hinweise, die mir helfen zu verstehen und wo ich suchen sollte?
Keine Notwendigkeit, den HTTP-Server auf der Lambda-Funktion auszuführen. Dieser Code sollte funktionieren
func indexhandler(ctx context.context, req events.apigatewayproxyrequest) (string, error) { getweather() getsurf() checksurf(forecastgroup) p := codcallpage{title: "swell forecast", runtime: htmlrundate, dailyhtmldata: dailymatchingswells} var res bytes.buffer if err := codcalltemplateinit.execute(&res, p); err != nil { return "", err } return res.string(), nil } func main() { lambda.start(indexhandler) }
Mit dem AWS-API-Gateway-Proxy müssen Sie die Rückgabe events.apigatewayproxyresponse
,因此indexhandler
verschieden machen.
func indexHandler(ctx context.Context, req events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) { GetWeather() GetSurf() CheckSurf(ForecastGroup) p := CodCallPage{Title: "Swell Forecast", RunTime: htmlRunDate, DailyHtmlData: DailyMatchingSwells} var res bytes.Buffer if err := codcallTemplateInit.Execute(&res, p); err != nil { return events.APIGatewayProxyResponse{StatusCode: 400, Body: err.Error()}, err } return events.APIGatewayProxyResponse{Body: res.String(), StatusCode: 200}, nil }
Das obige ist der detaillierte Inhalt vonWie kann ich HTML von der Go Lambda-Funktion zurückgeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!