Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Topik ini menjelaskan cara mengonfigurasi ASP.NET Web API.
- Pengaturan Konfigurasi
- Mengonfigurasi WEB API dengan ASP.NET Hosting
- Mengonfigurasi API Web dengan OWIN Self-Hosting
- Layanan API Web Global
- Konfigurasi Per Pengontrol
Pengaturan Konfigurasi
Pengaturan konfigurasi API Web ditentukan di kelas HttpConfiguration .
| Anggota | Deskripsi |
|---|---|
| DependencyResolver | Mengaktifkan injeksi dependensi untuk pengontrol. Lihat Menggunakan Pemecah Dependensi API Web. |
| Filter | Filter tindakan. |
| Formatters | Pemformat jenis media. |
| IncludeErrorDetailPolicy | Menentukan apakah server harus menyertakan detail kesalahan, seperti pesan pengecualian dan jejak tumpukan, dalam pesan respons HTTP. Lihat IncludeErrorDetailPolicy. |
| Penginisialisasi | Fungsi yang melakukan inisialisasi akhir HttpConfiguration. |
| MessageHandlers | Penangan pesan HTTP. |
| ParameterBindingRules | Kumpulan aturan untuk mengikat parameter pada tindakan pengontrol. |
| Properti | Tas properti generik. |
| Rute | Pengumpulan rute. Lihat Perutean di ASP.NET Web API. |
| Layanan | Pengumpulan layanan. Lihat Layanan. |
Prasyarat
Visual Studio 2017 Edisi Komunitas, Profesional, atau Perusahaan.
Mengonfigurasi WEB API dengan ASP.NET Hosting
Dalam aplikasi ASP.NET, konfigurasikan API Web dengan memanggil GlobalConfiguration.Configure dalam metode Application_Start . Metode Konfigurasi mengambil delegasi dengan satu parameter jenis HttpConfiguration. Lakukan semua konfigurasi Anda di dalam delegasi.
Berikut adalah contoh menggunakan delegasi anonim:
using System.Web.Http;
namespace WebApplication1
{
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(config =>
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
});
}
}
}
Di Visual Studio 2017, templat proyek "ASP.NET Web Application" secara otomatis menyiapkan kode konfigurasi, jika Anda memilih "Web API" dalam dialog Proyek ASP.NET Baru .
Templat proyek membuat file bernama WebApiConfig.cs di dalam folder App_Start. File kode ini menentukan delegasi tempat Anda harus meletakkan kode konfigurasi API Web Anda.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace WebApplication1
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// TODO: Add any additional configuration code.
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
Templat proyek juga menambahkan kode yang memanggil delegasi dari Application_Start.
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
}
}
Mengonfigurasi API Web dengan Self-Hosting OWIN
Jika Anda menghost sendiri dengan OWIN, buat instans HttpConfiguration baru. Lakukan konfigurasi apa pun pada instans ini, lalu teruskan instans ke metode ekstensi Owin.UseWebApi .
public class Startup
{
public void Configuration(IAppBuilder appBuilder)
{
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
appBuilder.UseWebApi(config);
}
}
Tutorial Menggunakan OWIN untuk Self-Host ASP.NET Web API 2 menunjukkan langkah-langkah lengkap.
Layanan API Web Global
Koleksi HttpConfiguration.Services berisi sekumpulan layanan global yang digunakan API Web untuk melakukan berbagai tugas, seperti pemilihan pengontrol dan negosiasi konten.
Catatan
Kumpulan Layanan bukan mekanisme tujuan umum untuk penemuan layanan atau injeksi dependensi. Ini hanya menyimpan jenis layanan yang diketahui oleh kerangka kerja API Web.
Koleksi Layanan diinisialisasi dengan serangkaian layanan default, dan Anda dapat menyediakan implementasi kustom Anda sendiri. Beberapa layanan mendukung beberapa instans, sementara yang lain hanya dapat memiliki satu instans. (Namun, Anda juga dapat menyediakan layanan di tingkat pengontrol; lihat Konfigurasi Per Pengontrol.
Layanan Single-Instance
| Layanan | Deskripsi |
|---|---|
| IActionValueBinder | Mendapatkan pengikatan untuk parameter. |
| IApiExplorer | Mendapatkan deskripsi API yang diekspos oleh aplikasi. Lihat Membuat Halaman Bantuan untuk API Web. |
| IAssembliesResolver | Mendapatkan daftar rakitan untuk aplikasi. Lihat Perutean dan Pemilihan Tindakan. |
| IBodyModelValidator | Memvalidasi model yang dibaca dari isi permintaan oleh pemformat jenis media. |
| IContentNegotiator | Melakukan negosiasi konten. |
| IDocumentationProvider | Menyediakan dokumentasi untuk API. Defaultnya adalah null. Lihat Membuat Halaman Bantuan untuk API Web. |
| IHostBufferPolicySelector | Menunjukkan apakah host harus buffer badan entitas pesan HTTP. |
| IHttpActionInvoker | Memanggil tindakan pengontrol. Lihat Perutean dan Pemilihan Tindakan. |
| IHttpActionSelector | Memilih tindakan pengontrol. Lihat Perutean dan Pemilihan Tindakan. |
| IHttpControllerActivator | Mengaktifkan pengontrol. Lihat Perutean dan Pemilihan Tindakan. |
| IHttpControllerSelector | Memilih pengontrol. Lihat Perutean dan Pemilihan Tindakan. |
| IHttpControllerTypeResolver | Menyediakan daftar jenis pengontrol API Web dalam aplikasi. Lihat Perutean dan Pemilihan Tindakan. |
| ITraceManager | Menginisialisasi kerangka kerja pelacakan. Lihat Pelacakan di ASP.NET Web API. |
| ITraceWriter | Menyediakan penulis jejak. Defaultnya adalah penulis jejak "no-op". Lihat Pelacakan di ASP.NET Web API. |
| IModelValidatorCache | Menyediakan cache validator model. |
Layanan Multiple-Instance
| Layanan | Deskripsi |
|---|---|
| IFilterProvider | Mengembalikan daftar filter untuk tindakan pengontrol. |
| ModelBinderProvider | Mengembalikan pengikat model untuk jenis tertentu. |
| ModelMetadataProvider | Menyediakan metadata untuk model. |
| ModelValidatorProvider | Menyediakan validator untuk model. |
| ValueProviderFactory | Membuat penyedia nilai. Untuk informasi selengkapnya, lihat posting blog Mike Stall Cara membuat penyedia nilai kustom di WebAPI |
Untuk menambahkan implementasi kustom ke layanan multi-instans, panggil Tambahkan atau Sisipkan pada koleksi Layanan :
config.Services.Add(typeof(IFilterProvider), new MyFilterProvider());
Untuk mengganti layanan instans tunggal dengan implementasi kustom, panggil Ganti pada koleksi Layanan :
config.Services.Replace(typeof(ITraceWriter), new MyTraceWriter());
Konfigurasi Per-Controller
Anda dapat mengambil alih pengaturan berikut berdasarkan per pengontrol:
- Pemformat jenis media
- Aturan pengikatan parameter
- Layanan
Untuk melakukannya, tentukan atribut kustom yang mengimplementasikan antarmuka IControllerConfiguration . Kemudian terapkan atribut ke pengontrol.
Contoh berikut menggantikan pemformat jenis media default dengan pemformat kustom.
using System;
using System.Web.Http;
using System.Web.Http.Controllers;
namespace WebApplication1.Controllers
{
public class UseMyFormatterAttribute : Attribute, IControllerConfiguration
{
public void Initialize(HttpControllerSettings settings,
HttpControllerDescriptor descriptor)
{
// Clear the formatters list.
settings.Formatters.Clear();
// Add a custom media-type formatter.
settings.Formatters.Add(new MyFormatter());
}
}
[UseMyFormatter]
public class ValuesController : ApiController
{
// Controller methods not shown...
}
}
Metode IControllerConfiguration.Initialize mengambil dua parameter:
- Objek HttpControllerSettings
- Objek HttpControllerDescriptor
HttpControllerDescriptor berisi deskripsi pengontrol, yang dapat Anda periksa untuk tujuan informasi (misalnya, untuk membedakan antara dua pengontrol).
Gunakan objek HttpControllerSettings untuk mengonfigurasi pengontrol. Objek ini berisi subset parameter konfigurasi yang dapat Anda ambil alih berdasarkan per pengontrol. Pengaturan apa pun yang tidak Anda ubah default ke objek HttpConfiguration global.