【AWS】サーバーレスAPIでリダイレクトしてみた【サーバーレス】
こんにちは!nomurabbitです。
この記事ではLambdaで作ったサーバーレスAPIで
リダイレクトする方法を紹介します。
認証のロジックなんかで
使えそうですね。
ソースコード
今回はパッケージの追加は不要です。
ソースコードのポイントは下記の通りです。
public ApiResponse FunctionHandler(object input, ILambdaContext context) { try { ApiRequest apiRequest = JsonSerializer.Deserialize<ApiRequest>(input.ToString(), ApiUtil.GetJsonSerializerOptionsDefault()); ApiRequestBody apiRequestBody = (apiRequest.Body == null) ? new ApiRequestBody() : JsonSerializer.Deserialize<ApiRequestBody>(apiRequest.Body, ApiUtil.GetJsonSerializerOptionsDefault()); ApiResponse apiResponse = new ApiResponse(); List<ApiResponseBody> apiResponseBodyList = new List<ApiResponseBody>(); ApiResponseBody apiResponseBody = new ApiResponseBody(); Dictionary<string, string> apiResonseHeaders = new Dictionary<string, string>{{"Access-Control-Allow-Origin", "*"},{"Access-Control-Allow-Headers", "Content-Type"}, {"Access-Control-Allow-Methods", "GET"}, {"Location", "https://www.nomurabbit.com/"}}; Dictionary<string, string[]> apiResonseMultiValueHeaders = new Dictionary<string, string[]>{{"Set-Cookie", new string[] {"KEY1=VALUE1; SameSite=None", "KEY2=VALUE2; SameSite=None"}}}; apiResponse.IsBase64Encoded = false; apiResponse.StatusCode = HttpStatusCode.Redirect; apiResponse.Headers = apiResonseHeaders; apiResponse.MultiValueHeaders = apiResonseMultiValueHeaders; apiResponse.Body = ""; return apiResponse; } catch (System.Exception e) { ApiResponse apiResponse = new ApiResponse(); ApiResponseBody apiResponseBody = new ApiResponseBody(); Dictionary<string, string> apiResonseHeaders = new Dictionary<string, string>{{"Access-Control-Allow-Origin", "*"},{"Access-Control-Allow-Headers", "Content-Type"}, {"Access-Control-Allow-Methods", "GET"}}; Dictionary<string, string[]> apiResonseMultiValueHeaders = new Dictionary<string, string[]>{{"Set-Cookie", new string[] {"KEY1=VALUE1; SameSite=None", "KEY2=VALUE2; SameSite=None"}}}; apiResponse.IsBase64Encoded = false; apiResponse.StatusCode = HttpStatusCode.OK; apiResponse.Headers = apiResonseHeaders; apiResponse.MultiValueHeaders = apiResonseMultiValueHeaders; apiResponseBody.Message = e.Message + e.StackTrace; apiResponse.Body = JsonSerializer.Serialize(apiResponseBody); return apiResponse; } }
apiResponse.StatusCode を HttpStatusCode.Redirectにするのと、
レスポンスヘッダーに
Locationを入れるのがポイントですね。
GitHubにソースコードを載せていますので、
よければ参考にしてください。
Lambdaで作ったサーバーレスAPIで
リダイレクトする方法は以上です。
よかったら試してみてください。
では!