LoginSignup
7
4

More than 5 years have passed since last update.

HttpStatusCodeで429を扱う

Posted at

気になったので調べてみた。

HttpStatusCode 429 TooManyRequest
https://tools.ietf.org/html/rfc6585#section-4

2012年くらいに作られた定義。アクセス過多などによりレート制限がかかった場合のステータス。
400代は基本的にノーリトライだと考えてたけど、これのおかげで単純に400台をノーリトライとすることができない嫌なやつ。

実は.NETのHttpStatusCodeには429の定義がない。
正確には.NETCore2.1にはあって.NET Framework、mono、.NET Standardにはない。

「じゃあ、HttpClientとかでStatusCode受け取れないじゃん」

と思うのだけど、

結果からいうと429扱える。 C#のenumの特性を勘違いしてた。

スクリーンショット 2018-08-27 23.42.15.png

429を返すAPIにアクセスした時のWatch
普段はenumの名前で表示される部分が数字になってる。

じゃあどうやって扱えるかというと

スクリーンショット 2018-08-27 23.43.09.png

これで良い。

C#のenumってこんなこと出来るんですね。試したこともなかったので知らなかったです。

まぁ普通に考えて故意にはやらないのだけど、設計などで応用というか幅を広げられるかも。

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4