私は、requestsモジュールを使用して、(正しく)304 "Not Modified"で応答するgetリクエストを送信するプログラムを持っています。リクエストした後、私はresponse.status_code == requests.codes.ok
、しかしこのチェックは失敗します。リクエストは304を「OK」と見なしませんか?
実際のコード ソース内 を確認できます。 ok
は200のみを意味します。
ステータスコードが4xx
でも5xx
でもない場合にok
を返すResponse
オブジェクトには True
というプロパティがあります。
したがって、次のことができます。
if response.ok:
# 304 is included
このプロパティのコードは非常に単純です。
@property
def ok(self):
try:
self.raise_for_status()
except HTTPError:
return False
return True
ここでは、requests.statusコードの実装を確認できます ソースコード 。
実装により、次のようにすべて/あらゆる種類のstatus_codesにアクセスできます。
import requests
import traceback
url = "https://google.com"
req = requests.get(url)
try:
if req.status_code == requests.codes['ok']: # Check the source code for all the codes
print('200')
Elif req.status_code == requests.codes['not_modified']: # 304
print("304")
elifreq.status_code == requests.codes['not_found']: # 404
print("404")
else:
print("None of the codes")
except:
traceback.print_exc(file=sys.stdout)
結論として、デモンストレーションのようにリクエスト/レスポンスにアクセスできます。より良い方法があると確信していますが、これは私にとってはうまくいきました。