【AWS】サーバーレスAPIでURLパラメータ取得してみた【サーバーレス】
こんにちは!nomurabbitです。
この記事ではLambdaで作ったサーバーレスAPIで
URLパラメータを取得する方法を紹介します。
例えば検索条件を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(); ApiResponseBody apiResponseBody = new ApiResponseBody(); string targetParamKey = "user_id"; Dictionary<string, string>.KeyCollection paramKeys = apiRequest.QueryStringParameters.Keys; foreach( string paramKey in paramKeys ) { if(paramKey == targetParamKey) { apiResponseBody.Message = apiRequest.QueryStringParameters[targetParamKey] ; } } Dictionary<string, string> apiResonseHeaders = new Dictionary<string, string>{{"Access-Control-Allow-Origin", "*"},{"Access-Control-Allow-Headers", "Content-Type"}, {"Access-Control-Allow-Methods", "POST"}, {"Lambda-Result-Code", ApiUtil.RESULT_CODE_SUCCESS}, {"Lambda-Result-Message", ApiUtil.GetResultCodeDictionary()[ApiUtil.RESULT_CODE_SUCCESS]}}; 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; apiResponse.Body = JsonSerializer.Serialize(apiResponseBody); return apiResponse; } catch (System.Exception e) { ApiResponse apiResponse = new ApiResponse(); ApiResponseBody apiResponseBody = new ApiResponseBody(); apiResponseBody.Message = "aaa"; Dictionary<string, string> apiResonseHeaders = new Dictionary<string, string>{{"Access-Control-Allow-Origin", "*"},{"Access-Control-Allow-Headers", "Content-Type"}, {"Access-Control-Allow-Methods", "POST"}, {"Lambda-Result-Code", ApiUtil.RESULT_CODE_ERROR}, {"Lambda-Result-Message", e.Message + "::" + e.StackTrace}}; 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; apiResponse.Body = JsonSerializer.Serialize(apiResponseBody); return apiResponse; } }
apiRequest.QueryStringParameters から
パラメータが取得できるんですね。
GitHubにソースコードを載せていますので、
よければ参考にしてください。
以上でサーバーレスAPIでURLパラメータを
取得できると思います。
よかったら試してみてください。
では!