Toolbelt.blazor.httpclientinterceptor: ์„œ๋ฒ„์—์„œ ์˜ค๋Š” ๋ฉ”์‹œ์ง€ ๋ณด๊ธฐ

์— ๋งŒ๋“  2020๋…„ 01์›” 22์ผ  ยท  7์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: jsakamoto/Toolbelt.Blazor.HttpClientInterceptor

์„œ๋ฒ„์—์„œ ์˜ค๋Š” ์‘๋‹ต ๋ฉ”์‹œ์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ์˜ˆ๋ฅผ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์š”์ฒญ์ด ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•  ๋•Œ ๋ณผ ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฏ€๋กœ "์˜ค๋ฅ˜" ํ† ์ŠคํŠธ๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ์œ„์น˜์— ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”!

๋ชจ๋“  7 ๋Œ“๊ธ€

ํ•œ ๊ฐ€์ง€ ํ•ด๊ฒฐ์ฑ…์€ SendAsync ๋ฉ”์„œ๋“œ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            HttpResponseMessage response = null;
            try
            {
                BeforeSend?.Invoke(this, request);
                response = await (SendAsyncMethod.Invoke(Handler, new object[] { request, cancellationToken }) as Task<HttpResponseMessage>);
                return response;
            }
            finally
            {
                AfterSend?.Invoke(this, response);
            }
        }

๊ทธ๋ฆฌ๊ณ  ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋Š”

/// <summary>
/// Occurs before a HTTP request sending.
/// </summary>
public event EventHandler<HttpRequestMessage> BeforeSend;

/// <summary>
/// Occurs after received a response of a HTTP request. (include it wasn't succeeded.)
/// </summary>
public event EventHandler<HttpResponseMessage> AfterSend;

๋‚˜๋Š” ์ด ์ œ์•ˆ์„ ๋ฐ›์•„๋“ค์˜€๋‹ค. Sorta๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ทธ๋ž˜์•ผ ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. EventArgs e ์˜ ์œ ์šฉ์„ฑ์„ ์ดํ•ดํ•˜์ง€ ์•Š๋Š” ํ•œ ์ด ์ธํ„ฐ์…‰ํ„ฐ๋ฅผ ํ›จ์”ฌ ๋” ์œ ์šฉํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ข‹์€ ํ”ผ๋“œ๋ฐฑ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๐Ÿ‘

@khamang์ด ์ œ์•ˆํ•œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜๋Š” "Blazor WebAssembly(ํด๋ผ์ด์–ธํŠธ ์ธก) HttpClient ์ธํ„ฐ์…‰ํ„ฐ" v.6.1.0์„ ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค !

์ฐธ์กฐ: https://github.com/jsakamoto/Toolbelt.Blazor.HttpClientInterceptor/#the -arguments-of-event-handler

๊ทธ๋ž˜์„œ ์ด๊ฒƒ์€ ๊ณ ์ณ์•ผ ํ•ฉ๋‹ˆ๊นŒ? AfterSend์—์„œ ์‘๋‹ต ์ฝ˜ํ…์ธ ์— ์•ก์„ธ์Šคํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์—ฌ์ „ํžˆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
http.PostAsync๊ฐ€ ์ž ๊ฒจ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณธ๋ฌธ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๋„๋ก ๋งŒ๋“œ๋Š” ์„œ๋น„์Šค์—์„œ ๋งํ•ฉ๋‹ˆ๋‹ค.

@Swerik ์ œ๋ณด ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ด๊ฒƒ์€ ๊ณ ์ณ์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์—ฌ์ „ํžˆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค ...

์ด ์Šค๋ ˆ๋“œ๋Š” ์˜ค๋ฅ˜ ๋ณด๊ณ ์„œ๊ฐ€ ์•„๋‹ˆ๋ผ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ œ์•ˆ ์Šค๋ ˆ๋“œ์ž…๋‹ˆ๋‹ค.
์ง€๊ธˆ ์‹ ๊ณ ํ•˜์‹  ๋ฌธ์ œ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ์ค„์€ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค.

๋‚˜์ค‘์— ๊ทธ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋ ค๊ณ  ํ•˜๊ณ  ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ˆ˜์ •ํ•˜๋„๋ก ๋…ธ๋ ฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์˜ค ์ด๊ฒŒ ๋งž๋Š”์ค„ ์•Œ์•˜๋Š”๋ฐ ๋” ์ž์„ธํ•œ ์ƒˆ๋กœ์šด ์ด์Šˆ๋ฅผ ๋งŒ๋“ค๊ฒŒ

@Swerik ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰