Bagikan melalui


Mulai menggunakan ASP.NET Web API 2 (C#)

oleh Mike Wasson

Unduh Proyek yang Selesai

Dalam tutorial ini, Anda akan menggunakan ASP.NET Web API untuk membuat API web yang mengembalikan daftar produk.

HTTP bukan hanya untuk menyajikan halaman web. HTTP juga merupakan platform yang kuat untuk membangun API yang mengekspos layanan dan data. HTTP sederhana, fleksibel, dan di mana-mana. Hampir semua platform yang dapat Anda anggap memiliki pustaka HTTP, sehingga layanan HTTP dapat menjangkau berbagai klien, termasuk browser, perangkat seluler, dan aplikasi desktop tradisional.

ASP.NET Web API adalah kerangka kerja untuk membangun API web di atas .NET Framework.

Versi perangkat lunak yang digunakan dalam tutorial

Lihat Membuat API web dengan ASP.NET Core dan Visual Studio untuk Windows untuk versi tutorial yang lebih baru.

Membuat Proyek API Web

Dalam tutorial ini, Anda akan menggunakan ASP.NET Web API untuk membuat API web yang mengembalikan daftar produk. Halaman web front-end menggunakan jQuery untuk menampilkan hasilnya.

Cuplikan layar jendela browser host lokal, memperlihatkan proyek sampel dengan daftar produk, harganya, dan bidang dan tombol cari berdasarkan I D.

Mulai Visual Studio dan pilih Proyek Baru dari halaman Mulai . Atau, dari menu File , pilih Baru lalu Proyek.

Di panel Templat , pilih Templat terinstal dan perluas simpul Visual C# . Di bawah Visual C#, pilih Web. Dalam daftar templat proyek, pilih ASP.NET Aplikasi Web. Beri nama proyek "ProductsApp" dan klik OK.

Cuplikan layar opsi templat 'tambahkan proyek baru', menyoroti langkah-langkah dan pilihan untuk membuat proyek baru.

Dalam dialog Proyek ASP.NET Baru , pilih templat Kosong . Di bagian "Tambahkan folder dan referensi inti untuk", centang API Web. Klik OK.

Cuplikan layar kotak dialog proyek baru, dengan opsi templat yang berbeda dan tiga pilihan untuk folder dan referensi inti.

Catatan

Anda juga dapat membuat proyek API Web menggunakan templat "API Web". Templat API Web menggunakan ASP.NET MVC untuk menyediakan halaman bantuan API. Saya menggunakan templat Kosong untuk tutorial ini karena saya ingin menampilkan API Web tanpa MVC. Secara umum, Anda tidak perlu tahu ASP.NET MVC untuk menggunakan Web API.

Menambahkan Model

Model adalah objek yang mewakili data dalam aplikasi Anda. ASP.NET Web API dapat secara otomatis membuat serial model Anda ke JSON, XML, atau beberapa format lainnya, lalu menulis data berseri ke dalam isi pesan respons HTTP. Selama klien dapat membaca format serialisasi, klien dapat mendeserialisasi objek. Sebagian besar klien dapat mengurai XML atau JSON. Selain itu, klien dapat menunjukkan format mana yang diinginkannya dengan mengatur header Terima di pesan permintaan HTTP.

Mari kita mulai dengan membuat model sederhana yang mewakili produk.

Jika Penjelajah Solusi belum terlihat, klik menu Tampilan dan pilih Penjelajah Solusi. Di Penjelajah Solusi, klik kanan folder Model. Dari menu konteks, pilih Tambahkan lalu pilih Kelas.

Cuplikan layar menu penjelajah solusi, menampilkan opsi yang terletak di folder model yang menunjukkan cara menambahkan kelas.

Beri nama kelas "Produk". Tambahkan properti berikut ke Product kelas .

namespace ProductsApp.Models
{
    public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Category { get; set; }
        public decimal Price { get; set; }
    }
}

Menambahkan Pengontrol

Di Web API, pengontrol adalah objek yang menangani permintaan HTTP. Kami akan menambahkan pengontrol yang dapat mengembalikan daftar produk atau satu produk yang ditentukan oleh ID.

Catatan

Jika Anda telah menggunakan ASP.NET MVC, Anda sudah terbiasa dengan pengontrol. Pengontrol API Web mirip dengan pengontrol MVC, tetapi mewarisi kelas ApiController alih-alih kelas Pengontrol .

Di Penjelajah Solusi, klik kanan folder Pengontrol. Pilih Tambahkan lalu pilih Pengontrol.

Cuplikan layar menu penjelajah solusi, menampilkan panduan visual untuk menambahkan kelas pengontrol ke proyek.

Dalam dialog Tambahkan Perancah , pilih Pengontrol API Web - Kosong. Klik Tambahkan.

Cuplikan layar memperlihatkan opsi menu kotak dialog 'tambahkan perancah', menyoroti pengontrol Web A P I - opsi kosong.

Dalam dialog Tambahkan Pengontrol , beri nama pengontrol "ProductsController". Klik Tambahkan.

Cuplikan layar kotak dialog 'tambahkan pengontrol', seret kata 'pengontrol produk' di kotak bidang, dan tombol tambahkan di bawahnya.

Perancah membuat file bernama ProductsController.cs di folder Pengontrol.

Cuplikan layar opsi menu penjelajah solusi, melingkari opsi yang baru dibuat yang disebut 'products controller dot C S di folder pengontrol.

Catatan

Anda tidak perlu memasukkan pengontrol ke dalam folder bernama Pengontrol. Nama folder hanyalah cara mudah untuk mengatur file sumber Anda.

Jika file ini belum dibuka, klik dua kali file untuk membukanya. Ganti kode dalam file ini dengan yang berikut ini:

using ProductsApp.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web.Http;

namespace ProductsApp.Controllers
{
    public class ProductsController : ApiController
    {
        Product[] products = new Product[] 
        { 
            new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 }, 
            new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M }, 
            new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M } 
        };

        public IEnumerable<Product> GetAllProducts()
        {
            return products;
        }

        public IHttpActionResult GetProduct(int id)
        {
            var product = products.FirstOrDefault((p) => p.Id == id);
            if (product == null)
            {
                return NotFound();
            }
            return Ok(product);
        }
    }
}

Untuk menjaga contoh sederhana, produk disimpan dalam array tetap di dalam kelas pengontrol. Tentu saja, dalam aplikasi nyata, Anda akan mengkueri database atau menggunakan beberapa sumber data eksternal lainnya.

Pengontrol mendefinisikan dua metode yang mengembalikan produk:

  • Metode mengembalikan GetAllProducts seluruh daftar produk sebagai jenis Produk> IEnumerable<.
  • Metode ini GetProduct mencari satu produk dengan ID-nya.

Itu saja! Anda memiliki API web yang berfungsi. Setiap metode pada pengontrol sesuai dengan satu atau beberapa URI:

Metode Pengontrol URI
GetAllProducts /api/products
GetProduct /api/products/id

Untuk metode , GetProductid dalam URI adalah tempat penampung. Misalnya, untuk mendapatkan produk dengan ID 5, URI adalah api/products/5.

Untuk informasi selengkapnya tentang cara Api Web merutekan permintaan HTTP ke metode pengontrol, lihat Perutean di ASP.NET Web API.

Memanggil API Web dengan Javascript dan jQuery

Di bagian ini, kita akan menambahkan halaman HTML yang menggunakan AJAX untuk memanggil API web. Kita akan menggunakan jQuery untuk melakukan panggilan AJAX dan juga untuk memperbarui halaman dengan hasilnya.

Di Penjelajah Solusi, klik kanan proyek dan pilih Tambahkan, lalu pilih Item Baru.

Cuplikan layar menu penjelajah solusi, menyoroti opsi aplikasi produk untuk menampilkan pilihan menunya untuk menambahkan item baru.

Dalam dialog Tambahkan Item Baru , pilih simpul Web di bawah Visual C#, lalu pilih item Halaman HTML . Beri nama halaman "index.html".

Cuplikan layar opsi menu 'tambahkan item baru', memperlihatkan pilihan web dan opsi yang tersedia di dalamnya.

Ganti semua yang ada di file ini dengan yang berikut ini:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Product App</title>
</head>
<body>

  <div>
    <h2>All Products</h2>
    <ul id="products" />
  </div>
  <div>
    <h2>Search by ID</h2>
    <input type="text" id="prodId" size="5" />
    <input type="button" value="Search" onclick="find();" />
    <p id="product" />
  </div>

  <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js"></script>
  <script>
    var uri = 'api/products';

    $(document).ready(function () {
      // Send an AJAX request
      $.getJSON(uri)
          .done(function (data) {
            // On success, 'data' contains a list of products.
            $.each(data, function (key, item) {
              // Add a list item for the product.
              $('<li>', { text: formatItem(item) }).appendTo($('#products'));
            });
          });
    });

    function formatItem(item) {
      return item.Name + ': $' + item.Price;
    }

    function find() {
      var id = $('#prodId').val();
      $.getJSON(uri + '/' + id)
          .done(function (data) {
            $('#product').text(formatItem(data));
          })
          .fail(function (jqXHR, textStatus, err) {
            $('#product').text('Error: ' + err);
          });
    }
  </script>
</body>
</html>

Ada beberapa cara untuk mendapatkan jQuery. Dalam contoh ini, saya menggunakan CDN Microsoft Ajax. Anda juga dapat mengunduhnya dari http://jquery.com/, dan templat proyek "WEB API" ASP.NET juga menyertakan jQuery.

Mendapatkan Daftar Produk

Untuk mendapatkan daftar produk, kirim permintaan HTTP GET ke "/api/products".

Fungsi jQuery getJSON mengirimkan permintaan AJAX. Respons berisi array objek JSON. Fungsi menentukan done panggilan balik yang dipanggil jika permintaan berhasil. Dalam panggilan balik, kami memperbarui DOM dengan informasi produk.

$(document).ready(function () {
    // Send an AJAX request
    $.getJSON(apiUrl)
        .done(function (data) {
            // On success, 'data' contains a list of products.
            $.each(data, function (key, item) {
                // Add a list item for the product.
                $('<li>', { text: formatItem(item) }).appendTo($('#products'));
            });
        });
});

Mendapatkan Produk Berdasarkan ID

Untuk mendapatkan produk berdasarkan ID, kirim permintaan HTTP GET ke "/api/products/id", di mana id adalah ID produk.

function find() {
    var id = $('#prodId').val();
    $.getJSON(apiUrl + '/' + id)
        .done(function (data) {
            $('#product').text(formatItem(data));
        })
        .fail(function (jqXHR, textStatus, err) {
            $('#product').text('Error: ' + err);
        });
}

Kami masih memanggil getJSON untuk mengirim permintaan AJAX, tetapi kali ini kami memasukkan ID ke dalam URI permintaan. Respons dari permintaan ini adalah representasi JSON dari satu produk.

Menjalankan Aplikasi

Tekan F5 untuk mulai penelusuran kesalahan aplikasi. Halaman web akan terlihat seperti berikut ini:

Cuplikan layar browser web, memperlihatkan semua formulir poin produk, dengan harganya, diikuti dengan bidang 'cari oleh I D' di bawahnya.

Untuk mendapatkan produk menurut ID, masukkan ID dan klik Cari:

Cuplikan layar browser, memperlihatkan semua produk dan harga, dalam bentuk poin, dan angka 2 di bidang 'cari menurut I D'.

Jika Anda memasukkan ID yang tidak valid, server mengembalikan kesalahan HTTP:

Cuplikan layar browser, mencantumkan semua produk dan harganya, dan menampilkan pesan kesalahan 'tidak ditemukan' di bawah bidang 'cari oleh I D'.

Menggunakan F12 untuk Melihat Permintaan dan Respons HTTP

Ketika Anda bekerja dengan layanan HTTP, mungkin sangat berguna untuk melihat permintaan HTTP dan pesan respons. Anda dapat melakukan ini dengan menggunakan alat pengembang F12 di Internet Explorer 9. Dari Internet Explorer 9, tekan F12 untuk membuka alat. Klik tab Jaringan dan tekan Mulai Menangkap. Sekarang kembali ke halaman web dan tekan F5 untuk memuat ulang halaman web. Internet Explorer akan mengambil lalu lintas HTTP antara browser dan server web. Tampilan ringkasan memperlihatkan semua lalu lintas jaringan untuk halaman:

Cuplikan layar jendela pesan permintaan dan respons H T T P, memperlihatkan daftar U R L, dan semua respons lalu lintas jaringan.

Temukan entri untuk URI relatif "api/products/". Pilih entri ini dan klik Buka tampilan terperinci. Dalam tampilan detail, ada tab untuk melihat header dan isi permintaan dan respons. Misalnya, jika Anda mengklik tab Header permintaan , Anda dapat melihat bahwa klien meminta "application/json" di header Terima.

Cuplikan layar dialog permintaan dan pesan respons H T T P, memperlihatkan contoh respons permintaan A P I individu.

Jika Anda mengklik tab Isi respons, Anda dapat melihat bagaimana daftar produk diserialisasikan ke JSON. Browser lain memiliki fungsionalitas yang sama. Alat lain yang berguna adalah Fiddler, proksi penelusuran kesalahan web. Anda dapat menggunakan Fiddler untuk melihat lalu lintas HTTP Anda, dan juga untuk menyusun permintaan HTTP, yang memberi Anda kontrol penuh atas header HTTP dalam permintaan.

Lihat Aplikasi ini Berjalan di Azure

Ingin melihat situs yang sudah selesai berjalan sebagai aplikasi web langsung? Anda dapat menyebarkan versi lengkap aplikasi ke akun Azure Anda.

Anda memerlukan akun Azure untuk menyebarkan solusi ini ke Azure. Jika Anda belum memiliki akun, Anda memiliki opsi berikut:

  • Buka akun Azure secara gratis - Anda mendapatkan kredit yang dapat Anda gunakan untuk mencoba layanan Azure berbayar, dan bahkan setelah habis, Anda dapat menyimpan akun dan menggunakan layanan Azure gratis.
  • Aktifkan manfaat pelanggan MSDN - Langganan MSDN Anda memberi Anda kredit setiap bulan yang dapat Anda gunakan untuk layanan Azure berbayar.

Langkah berikutnya