Getting started Membuat ASP.Net Web API 2 C# Dengan ADO.NET {Functions & Actions, Routing, formatters JSON, testing WEB API 2}

Getting started Membuat ASP.Net Web API 2 C# Dengan ADO.NET {Functions & Actions, Routing, formatters JSON, testing WEB API 2}

Untuk mengikuti ini yang kalian perlukan adalah :

1. Mengetahui membuat koneksi untuk Web Api 2 ASP.NET dengan C# menggunakan ADO.NET, bisa kalian pelajari di posting sebelumnya di sini

2. Mengetahui cara mengeksekusi suatu sql di dalam SQL SERVER.

Disini kita akan mempelajari langkah awal membuat Functions & Actions didalam Web API 2, Routing di ASP.NET Web API 2, Dan juga membuat formatters JSON response di dalam ASP.NET Web API 2 serta tidak ketinggalan Cara mengetest didalam Web API 2. Pada dasarnya untuk fungsi bisa kalian terapkan di MVC juga.

Langkah awal kita akan membuat dahulu Table Customers yang kita gunakan disini saya akan mengambil dari databasenorthwind yang desainnya bisa lihat di bawah ini :

a1

bisa juga di download SQL untuk struktur dan data nya di sini

Setelah dipasang table Customers didalam database masing masing, maka kita akan membuat Class di models didalam projek Visual studio dengan nama “Customer“, dengan cara meng klik kanan Folder Models seperti dibawah ini :

a2

a3

source code Class “Customer” bisa dilihat di bawah ini :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MVC_API_ADO.Models
{
 public class Customer
 {
 public string CustomerID { get; set; }
 public string CompanyName { get; set; }
 public string ContactName { get; set; }
 public string ContactTitle { get; set; }
 public string Address { get; set; }
 public string Region { get; set; }
 public string PostalCode { get; set; }
 public string City { get; set; }
 public string Country { get; set; }
 public string Phone { get; set; }
 public string Fax { get; set; }
 }
}

sebelumnya kita harus membuat fungsi agar yang kita buat mendukung paging nantinya, jadi kita memerlukan fungsi untuk membuat dari record mana dan sampai record mana yang kita akan ambil dan juga untuk mendukung fungsi sort nantinya, untuk itu kita akan menambahkan fungsi didalam Class Conn  yang kita buat sebelumnya, ini source tambahannya :

public string GetQuery(string sql, string FILD_ORDER, int from_numrow, int to_numrow)</pre>
{
to_numrow = to_numrow + from_numrow;
string query = "Select * from (select *,row_number() over(order by " + FILD_ORDER + " ) as rowno from(" + sql + ")x) d_limit where d_limit.rowno Between " + from_numrow + " and " + to_numrow + "";
return query.ToString();
}

fungsi ini mendukung untuk SQL SERVER 2012 kebawah, karena querynya tidak memakai feature SQL SERVER 2012.

setelah itu kita akan buat class “CustomerDetail” didalam Folder Models yang fungsinya untuk membuat Fungsi yang berhubungan dengan table Customers , kita akan membuat fungsi untuk mengambil data dari table Customers,

untuk source code nya bisa dilihat di bawah ini:

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Web;

namespace MVC_API_ADO.Models
{
public class CustomerDetail : iCustomerDetail
{

private Conn DB = new Conn();

public object GetAll(int jtStartIndex, int jtPageSize, string jtSorting)
{
List<Customer> customers = new List<Customer>();

DB.Open();
string query = string.Format("SELECT [CustomerID], [CompanyName], [ContactName], [ContactTitle], [Address], [City], [Region], [PostalCode], [Country], [Phone], [Fax] FROM [Northwind].[dbo].[Customers]");
string query2 = string.Format("SELECT [CustomerID] FROM [Northwind].[dbo].[Customers]");

string queryfilter = DB.GetQuery(query, jtSorting, jtStartIndex, jtPageSize);
int tot = 0;
using (SqlCommand cmd2 = new SqlCommand(query, DB.SqlCon))
{
SqlDataReader reader2 = cmd2.ExecuteReader();
int rowCount = reader2.Cast<object>().Count();
tot = rowCount;
reader2.Dispose();

}

using (SqlCommand cmd = new SqlCommand(queryfilter, DB.SqlCon))
{
SqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())
{
Customer customer = new Customer();
customer.CustomerID = reader.GetString(0);
customer.CompanyName = reader.GetString(1);
customer.ContactName = values(reader, 2);
customer.ContactTitle = values(reader, 3);
customer.Address = values(reader, 4);
customer.City = values(reader, 5);

if (reader.GetValue(6) != null)
{
customer.Region = reader.GetValue(6).ToString();
}
else
{
customer.Region = string.Empty;
}

if (reader.GetValue(7) != null)
{
customer.PostalCode = reader.GetValue(7).ToString();
}
else
{
customer.PostalCode = string.Empty;
}

customer.Country = values(reader, 8);
customer.Phone = values(reader, 9);

if (reader.GetValue(10) != null)
{
customer.Fax = reader.GetValue(10).ToString();
}
else
{
customer.Fax = string.Empty;
}

customers.Add(customer);
}
reader.Dispose();
}
DB.Close();
// return customers.ToArray();
// return Json(JsonConvert.SerializeObject(new { success = true, data = units }), "text/javascript");

return new
{
Result = "OK",
Records = customers,
TotalRecordCount = tot
};
}

public string values(SqlDataReader value, int col)
{
string values = "";

if (value.IsDBNull(col))
{
values = string.Empty;
}
else
{
values = value.GetString(col).ToString();
}
return values;
}

}
}

 

Setelah itu kita akan membuat class interface nya didalam folder models , kita beri nama “iCustomerDetail” source code bisa dilihat dibawah ini :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MVC_API_ADO.Models
{
    public class iCustomerDetail
    {
        public interface iCustomerDetail
        {

            object GetAll(int jtStartIndex, int jtPageSize, string jtSorting);

        }
    }
}

setelah kita bahas tentang Models Class, selanjutnya kita akan membahas Controllers Class

Sebelumnya kita setting terlebih dahulu WebApiConfig didalam folder  App_Start untuk mengganti format standar nya menjadi JSON dan mematikan fungsi bawaan standarnya ,  source code bisa lihat dibawah ini :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Web.Http;
using Microsoft.Owin.Security.OAuth;
using Newtonsoft.Json.Serialization;
using System.Net.Http.Headers;

namespace MVC_API_ADO
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Configure Web API to use only bearer token authentication.
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

// Web API routes
config.MapHttpAttributeRoutes();

//config.Routes.MapHttpRoute(
// name: "DefaultApi",
// routeTemplate: "api/{controller}/{id}",
// defaults: new { id = RouteParameter.Optional }
//);

config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));

}
}
}

Kita akan membuat Controller untuk Customer, langkah step by step nya bisa di ikuti dibawah ini:

Klik kanan pada folder Controllers lalu pilih Add >> Controller bisa lihat pada gambar di bawah ini :
a4

Pilih WEB API 2 Controller – Empty
a5

Isi nama Controller dengan nama CustomerController
a6

kita akan membuat Controller dan route untuk Customers. silahkan lihat source code dibawah ini:

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

namespace MVC_API_ADO.Controllers
{

    [RoutePrefix("api/customer")]
    public class CustomerController : ApiController
    {
        static readonly iCustomerDetail repository = new CustomerDetail();

        [Route("getallcustomers")]
        [HttpPost]
        public object GetAllCustomers(int jtStartIndex, int jtPageSize)
        {
            string sortcolom = HttpContext.Current.Request["jtSorting"];
            string jtSorting = "";
            if (String.IsNullOrEmpty(sortcolom))
            {
                jtSorting = "CustomerID";
            }
            else
            {
                jtSorting = sortcolom;
            }
            return repository.GetAll(jtStartIndex, jtPageSize, jtSorting);

        }

    }
}

setelah ini kita akan Testing WEB API 2 yang kita buat, dengan cara menginstallWebApiTestClient

untuk detail cara menginstall WebApiTestClient nya bisa di lihat disini

setelah sukses menginstall WebApiTestClient, kita jalankan aplikasi kita dengan menekan F5

klik link dengan nama “API” seperti pada gambar di bawah ini :

a7

dan lihat lah hasil yang kita buat dibawah ini :

a8

setelah itu klik link yang di bundarkan seperti pada gambar di atas, lalu cari button “Test API” di pojok kanan bawah anda dan klik, setelah itu masukan URI parameters dari {jtStartIndex} dan {jtPageSize}, penjelasannya untuk {jtStartIndex} adalah awal record yang ingin kita lihat dan penjelasannya untuk {jtPageSize} berapa banyak record yang kita inginkan untuk dilihat dari awal record yang kita masukan sebelumnya.

a9

a10

Dan ini adalah hasilnya Response formatters JSON :

{
   "Result":"OK",
   "Records":[
      {
         "CustomerID":"ALFKI",
         "CompanyName":"Alfreds Futterkiste",
         "ContactName":"Maria Anders\"",
         "ContactTitle":"Sales Representative",
         "Address":"Obere Str. 57",
         "Region":"",
         "PostalCode":"12209",
         "City":"Berlin",
         "Country":"Germany",
         "Phone":"030-0074321",
         "Fax":"030-0076545"
      },
      {
         "CustomerID":"ANATR",
         "CompanyName":"Ana Trujillo Emparedados y helados",
         "ContactName":"Ana Trujillo",
         "ContactTitle":"Owner",
         "Address":"Avda. de la Constitución 2222",
         "Region":"",
         "PostalCode":"05021",
         "City":"México D.F.",
         "Country":"Mexico",
         "Phone":"(5) 555-4729",
         "Fax":"(5) 555-3745"
      },
      {
         "CustomerID":"ANTON",
         "CompanyName":"Antonio Moreno Taquería",
         "ContactName":"Antonio Moreno",
         "ContactTitle":"Owner",
         "Address":"Mataderos  2312",
         "Region":"",
         "PostalCode":"05023",
         "City":"México D.F.",
         "Country":"Mexico",
         "Phone":"(5) 555-3932",
         "Fax":""
      }
   ],
   "TotalRecordCount":84
}

Demikian posting “Getting started Membuat ASP.Net Web API 2 C# Dengan ADO.NET“, saya harap bermanfaat bagi kalian dan tunggu posting selanjutnya.

Wassalam.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s