http --- ماژول‌های HTTP

کد منبع: Lib/http/__init__.py


http بسته‌ای است که چندین ماژول برای کار با پروتکل انتقال ابرمتن را گردآوری می‌کند:

  • http.client یک کلاینت سطح پایین برای پروتکل HTTP است؛ برای باز کردن URL در سطح بالا از urllib.request استفاده کنید

  • http.server شامل کلاس‌های سرور HTTP پایه، مبتنی بر socketserver است

  • http.cookies ابزارهایی برای پیاده‌سازی مدیریت وضعیت با کوکی‌ها فراهم می‌کند

  • http.cookiejar ماندگاری کوکی‌ها را فراهم می‌کند

ماژول http همچنین شمارشی‌های زیر (enums) را تعریف می‌کند که به شما در کار با کد مرتبط با http کمک می‌کنند:

class http.HTTPStatus

اضافه شده در نسخه‌ی 3.5.

یک زیرکلاس از enum.IntEnum که مجموعه‌ای از کدهای وضعیت HTTP، عبارات دلیل و توضیحات طولانی نوشته‌شده به انگلیسی را تعریف می‌کند.

استفاده:

>>> from http import HTTPStatus
>>> HTTPStatus.OK
HTTPStatus.OK
>>> HTTPStatus.OK == 200
True
>>> HTTPStatus.OK.value
200
>>> HTTPStatus.OK.phrase
'OK'
>>> HTTPStatus.OK.description
'Request fulfilled, document follows'
>>> list(HTTPStatus)
[HTTPStatus.CONTINUE, HTTPStatus.SWITCHING_PROTOCOLS, ...]

کدهای وضعیت HTTP

کدهای وضعیت پشتیبانی‌شده و ثبت‌شده در IANA موجود در http.HTTPStatus عبارتند از:

کد

نام Enum

جزئیات

100

CONTINUE

معانی HTTP RFC 9110، بخش 15.2.1

101

SWITCHING_PROTOCOLS

معانی HTTP RFC 9110، بخش ۱۵.۲.۲

102

PROCESSING

WebDAV RFC 2518، بخش ۱۰.۱

103

EARLY_HINTS

کد وضعیت HTTP برای نشان‌دادن اشاره‌ها RFC 8297

200

OK

معناشناسی HTTP RFC 9110، بخش 15.3.1

201

CREATED

HTTP Semantics RFC 9110، بخش 15.3.2

202

ACCEPTED

معانی HTTP RFC 9110، بخش 15.3.3

203

NON_AUTHORITATIVE_INFORMATION

HTTP Semantics RFC 9110، بخش 15.3.4

204

NO_CONTENT

HTTP Semantics RFC 9110، بخش 15.3.5

205

RESET_CONTENT

معانی HTTP RFC 9110، بخش 15.3.6

206

PARTIAL_CONTENT

معناشناسی HTTP RFC 9110، بخش ۱۵.۳.۷

207

MULTI_STATUS

WebDAV RFC 4918، بخش ۱۱.۱

208

ALREADY_REPORTED

افزونه‌های پیوند WebDAV RFC 5842، بخش ۷.۱ (آزمایشی)

226

IM_USED

کدگذاری دلتا (Delta Encoding) در HTTP RFC 3229، بخش 10.4.1

300

MULTIPLE_CHOICES

معانی HTTP RFC 9110، بخش ۱۵.۴.۱

301

MOVED_PERMANENTLY

HTTP Semantics RFC 9110، بخش 15.4.2

302

FOUND

معناشناسی HTTP RFC 9110، بخش ۱۵.۴.۳

303

SEE_OTHER

HTTP Semantics RFC 9110، بخش 15.4.4

304

NOT_MODIFIED

معانی HTTP RFC 9110، بخش 15.4.5

305

USE_PROXY

معناشناسی HTTP RFC 9110، بخش 15.4.6

307

TEMPORARY_REDIRECT

HTTP Semantics RFC 9110، بخش 15.4.8

308

PERMANENT_REDIRECT

HTTP Semantics RFC 9110، بخش 15.4.9

400

BAD_REQUEST

HTTP Semantics RFC 9110، بخش 15.5.1

401

UNAUTHORIZED

معناشناسی HTTP RFC 9110، بخش 15.5.2

402

PAYMENT_REQUIRED

HTTP Semantics RFC 9110، بخش 15.5.3

403

FORBIDDEN

HTTP Semantics RFC 9110، بخش 15.5.4

404

NOT_FOUND

معانی HTTP RFC 9110، بخش 15.5.5

405

METHOD_NOT_ALLOWED

HTTP Semantics RFC 9110، بخش 15.5.6

406

NOT_ACCEPTABLE

معانی HTTP RFC 9110، بخش ۱۵.۵.۷

407

PROXY_AUTHENTICATION_REQUIRED

HTTP Semantics RFC 9110، بخش 15.5.8

408

REQUEST_TIMEOUT

معانی HTTP RFC 9110، بخش 15.5.9

409

CONFLICT

معانی HTTP RFC 9110، بخش 15.5.10

410

GONE

معناشناسی HTTP RFC 9110، بخش 15.5.11

411

LENGTH_REQUIRED

HTTP Semantics RFC 9110، بخش 15.5.12

412

PRECONDITION_FAILED

معناشناسی HTTP RFC 9110، بخش 15.5.13

413

CONTENT_TOO_LARGE

HTTP Semantics RFC 9110، بخش 15.5.14

414

URI_TOO_LONG

HTTP Semantics RFC 9110، بخش 15.5.15

415

UNSUPPORTED_MEDIA_TYPE

HTTP Semantics RFC 9110، بخش 15.5.16

416

RANGE_NOT_SATISFIABLE

معانی HTTP RFC 9110، بخش 15.5.17

417

EXPECTATION_FAILED

معناشناسی HTTP RFC 9110، بخش 15.5.18

418

IM_A_TEAPOT

HTCPCP/1.0 RFC 2324، بخش 2.3.2

421

MISDIRECTED_REQUEST

HTTP Semantics RFC 9110، بخش 15.5.20

422

UNPROCESSABLE_CONTENT

معانی HTTP RFC 9110، بخش 15.5.21

423

LOCKED

WebDAV RFC 4918، بخش ۱۱.۳

424

FAILED_DEPENDENCY

WebDAV RFC 4918، بخش 11.4

425

TOO_EARLY

استفاده از داده زودهنگام در HTTP RFC 8470

426

UPGRADE_REQUIRED

معانی HTTP RFC 9110، بخش 15.5.22

428

PRECONDITION_REQUIRED

کدهای وضعیت HTTP بیشتر RFC 6585

429

TOO_MANY_REQUESTS

کدهای وضعیت HTTP بیشتر RFC 6585

431

REQUEST_HEADER_FIELDS_TOO_LARGE

کدهای وضعیت HTTP بیشتر RFC 6585

451

UNAVAILABLE_FOR_LEGAL_REASONS

کد وضعیت HTTP برای گزارش موانع قانونی RFC 7725

500

INTERNAL_SERVER_ERROR

HTTP Semantics RFC 9110، بخش 15.6.1

501

NOT_IMPLEMENTED

HTTP Semantics RFC 9110، بخش 15.6.2

502

BAD_GATEWAY

معناشناسی HTTP RFC 9110، بخش 15.6.3

503

SERVICE_UNAVAILABLE

HTTP Semantics RFC 9110، بخش 15.6.4

504

GATEWAY_TIMEOUT

معانی HTTP RFC 9110، بخش 15.6.5

505

HTTP_VERSION_NOT_SUPPORTED

معانی HTTP RFC 9110، بخش 15.6.6

506

VARIANT_ALSO_NEGOTIATES

مذاکره شفاف محتوا در HTTP RFC 2295، بخش 8.1 (آزمایشی)

507

INSUFFICIENT_STORAGE

WebDAV RFC 4918، بخش ۱۱.۵

508

LOOP_DETECTED

افزونه‌های مقیدسازی WebDAV RFC 5842، بخش ۷.۲ (آزمایشی)

510

NOT_EXTENDED

یک چارچوب توسعه‌ی HTTP RFC 2774، بخش ۷ (آزمایشی)

511

NETWORK_AUTHENTICATION_REQUIRED

کدهای وضعیت HTTP بیشتر RFC 6585، بخش ۶

برای حفظ سازگاری با نسخه‌های پیشین، مقادیر enum در قالب ثابت‌ها در ماژول http.client نیز موجود هستند. نام enum برابر با نام ثابت است (یعنی http.HTTPStatus.OK به‌عنوان http.client.OK نیز در دسترس است).

تغییر یافته در نسخه‌ی 3.7: کد وضعیت 421 MISDIRECTED_REQUEST افزوده شد.

اضافه شده در نسخه‌ی 3.8: کد وضعیت 451 UNAVAILABLE_FOR_LEGAL_REASONS اضافه شد.

اضافه شده در نسخه‌ی 3.9: کدهای وضعیت 103 EARLY_HINTS، 418 IM_A_TEAPOT و 425 TOO_EARLY افزوده شدند.

تغییر یافته در نسخه‌ی 3.13: نام‌گذاری RFC9110 برای ثابت‌های وضعیت پیاده‌سازی شد. نام‌های قدیمی ثابت‌ها برای سازگاری با نسخه‌های قبلی حفظ شده‌اند: 413 REQUEST_ENTITY_TOO_LARGE، 414 REQUEST_URI_TOO_LONG، 416 REQUESTED_RANGE_NOT_SATISFIABLE و 422 UNPROCESSABLE_ENTITY.

دسته وضعیت HTTP

اضافه شده در نسخه‌ی 3.12.

مقادیر enum چندین ویژگی برای نشان دادن دسته‌ی وضعیت HTTP دارند:

ویژگی

نشان می‌دهد که

جزئیات

is_informational

100 <= status <= 199

معناشناسی HTTP RFC 9110، بخش ۱۵

is_success

200 <= status <= 299

معناشناسی HTTP RFC 9110، بخش ۱۵

is_redirection

300 <= status <= 399

معناشناسی HTTP RFC 9110، بخش ۱۵

is_client_error

400 <= status <= 499

معناشناسی HTTP RFC 9110، بخش ۱۵

is_server_error

500 <= status <= 599

معناشناسی HTTP RFC 9110، بخش ۱۵

استفاده:

>>> from http import HTTPStatus
>>> HTTPStatus.OK.is_success
True
>>> HTTPStatus.OK.is_client_error
False
class http.HTTPMethod

اضافه شده در نسخه‌ی 3.11.

زیرکلاسی از enum.StrEnum که مجموعه‌ای از متدهای HTTP و توضیحات نوشته‌شده به زبان انگلیسی را تعریف می‌کند.

استفاده:

>>> from http import HTTPMethod
>>>
>>> HTTPMethod.GET
<HTTPMethod.GET>
>>> HTTPMethod.GET == 'GET'
True
>>> HTTPMethod.GET.value
'GET'
>>> HTTPMethod.GET.description
'Retrieve the target.'
>>> list(HTTPMethod)
[<HTTPMethod.CONNECT>,
 <HTTPMethod.DELETE>,
 <HTTPMethod.GET>,
 <HTTPMethod.HEAD>,
 <HTTPMethod.OPTIONS>,
 <HTTPMethod.PATCH>,
 <HTTPMethod.POST>,
 <HTTPMethod.PUT>,
 <HTTPMethod.TRACE>]

متدهای HTTP

متدهای پشتیبانی‌شده و متدهای ثبت‌شده در IANA موجود در http.HTTPMethod عبارتند از:

متد

نام Enum

جزئیات

GET

GET

معناشناسی HTTP RFC 9110، بخش ۹.۳.۱

HEAD

HEAD

HTTP Semantics RFC 9110، بخش ۹.۳.۲

POST

POST

HTTP Semantics RFC 9110، بخش 9.3.3

PUT

PUT

HTTP Semantics RFC 9110، بخش 9.3.4

DELETE

DELETE

HTTP Semantics RFC 9110، بخش 9.3.5

CONNECT

CONNECT

HTTP Semantics RFC 9110، بخش 9.3.6

OPTIONS

OPTIONS

معناشناسی HTTP RFC 9110، بخش 9.3.7

TRACE

TRACE

HTTP Semantics RFC 9110، بخش 9.3.8

PATCH

PATCH

HTTP/1.1 RFC 5789