Bagikan melalui


Fitur Permintaan di ASP.NET Core

Oleh Steve Smith

HttpContext API yang digunakan aplikasi dan middleware untuk memproses permintaan memiliki lapisan abstraksi di bawahnya yang disebut antarmuka fitur. Setiap antarmuka fitur menyediakan subset terperinci dari fungsionalitas yang diekspos oleh HttpContext. Antarmuka ini dapat ditambahkan, dimodifikasi, dibungkus, diganti, atau bahkan dihapus oleh server atau middleware karena permintaan diproses tanpa harus mengimplementasikan ulang seluruh HttpContext. Mereka juga dapat digunakan untuk mengejek fungsionalitas saat pengujian.

Koleksi fitur

Features Properti dari HttpContext menyediakan akses ke pengumpulan antarmuka fitur untuk permintaan saat ini. Karena koleksi fitur dapat diubah bahkan dalam konteks permintaan, middleware dapat digunakan untuk memodifikasi koleksi dan menambahkan dukungan untuk fitur tambahan. Beberapa fitur canggih hanya tersedia dengan mengakses antarmuka terkait melalui koleksi fitur.

Antarmuka fitur

ASP.NET Core mendefinisikan sejumlah antarmuka fitur HTTP umum di Microsoft.AspNetCore.Http.Features, yang dibagikan oleh berbagai server dan middleware untuk mengidentifikasi fitur yang didukungnya. Server dan middleware juga dapat menyediakan antarmuka mereka sendiri dengan fungsionalitas tambahan.

Sebagian besar antarmuka fitur menyediakan fungsionalitas opsional, pencahayaan, dan API terkaitnya HttpContext menyediakan default jika fitur tersebut tidak ada. Beberapa antarmuka ditunjukkan dalam konten berikut sebagaimana diperlukan karena menyediakan fungsionalitas permintaan inti dan respons dan harus diimplementasikan untuk memproses permintaan.

Antarmuka fitur berikut berasal dari Microsoft.AspNetCore.Http.Features:

IHttpRequestFeature: Menentukan struktur permintaan HTTP, termasuk protokol, jalur, string kueri, header, dan isi. Fitur ini diperlukan untuk memproses permintaan.

IHttpResponseFeature: Menentukan struktur respons HTTP, termasuk kode status, header, dan isi respons. Fitur ini diperlukan untuk memproses permintaan.

IHttpResponseBodyFeature: Mendefinisikan berbagai cara menulis isi respons, menggunakan Stream, PipeWriter, atau file. Fitur ini diperlukan untuk memproses permintaan. Ini menggantikan IHttpResponseFeature.Body dan IHttpSendFileFeature.

IHttpAuthenticationFeature: Menyimpan yang ClaimsPrincipal saat ini terkait dengan permintaan.

IFormFeature: Digunakan untuk mengurai dan menyinggahkan pengiriman HTTP masuk dan formulir multipihak.

IHttpBodyControlFeature: Digunakan untuk mengontrol apakah operasi IO sinkron diizinkan untuk badan permintaan atau respons.

IHttpActivityFeature: Digunakan untuk menambahkan Activity informasi untuk pendengar diagnostik.

IHttpBufferingFeature: Mendefinisikan metode untuk menonaktifkan buffering permintaan dan/atau respons.

IHttpConnectionFeature: Menentukan properti untuk id koneksi dan alamat dan port lokal dan jarak jauh.

IHttpMaxRequestBodySizeFeature: Mengontrol ukuran isi permintaan maksimum yang diizinkan untuk permintaan saat ini.

IHttpRequestBodyDetectionFeature: Menunjukkan apakah permintaan dapat memiliki isi.

IHttpRequestIdentifierFeature: Menambahkan properti yang dapat diimplementasikan untuk mengidentifikasi permintaan secara unik.

IHttpRequestLifetimeFeature: Mendefinisikan dukungan untuk membatalkan koneksi atau mendeteksi apakah permintaan telah dihentikan sebelum waktunya, seperti oleh pemutusan sambungan klien.

IHttpRequestTrailersFeature: Menyediakan akses ke header trailer permintaan, jika ada.

IHttpResetFeature: Digunakan untuk mengirim pesan reset untuk protokol yang mendukungnya seperti HTTP/2 atau HTTP/3.

IHttpResponseTrailersFeature: Memungkinkan aplikasi untuk memberikan header trailer respons jika didukung.

IHttpSendFileFeature: Mendefinisikan metode untuk mengirim file secara asinkron.

IHttpUpgradeFeature: Menentukan dukungan untuk Peningkatan HTTP, yang memungkinkan klien menentukan protokol tambahan mana yang ingin digunakan jika server ingin beralih protokol.

IHttpWebSocketFeature: Menentukan API untuk mendukung soket web.

IHttpsCompressionFeature: Mengontrol apakah kompresi respons harus digunakan melalui koneksi HTTPS.

IItemsFeature: Menyimpan Items koleksi untuk status aplikasi per permintaan.

IQueryFeature: Mengurai dan menyimpan string kueri.

IRequestBodyPipeFeature: Mewakili isi permintaan sebagai PipeReader.

IRequestCookiesFeature: Mengurai dan menyimpan nilai header permintaan Cookie .

IResponseCookiesFeature: Mengontrol bagaimana respons cookiediterapkan ke Set-Cookie header.

IServerVariablesFeature: Fitur ini menyediakan akses ke variabel server permintaan seperti yang disediakan oleh IIS.

IServiceProvidersFeature: Menyediakan akses ke layanan permintaan dengan IServiceProvider cakupan.

ISessionFeature: Menentukan ISessionFactory dan ISession abstraksi untuk mendukung sesi pengguna. ISessionFeature diimplementasikan oleh SessionMiddleware (lihat Sesi di ASP.NET Core).

ITlsConnectionFeature: Menentukan API untuk mengambil sertifikat klien.

ITlsTokenBindingFeature: Menentukan metode untuk bekerja dengan parameter pengikatan token TLS.

ITrackingConsentFeature: Digunakan untuk mengkueri, memberikan, dan menarik persetujuan pengguna mengenai penyimpanan informasi pengguna yang terkait dengan aktivitas dan fungsionalitas situs.

Sumber Daya Tambahan: