- Rabu, 07 Maret 2018

Web Api dengan ASP.NET Core & MySQL Database


Pada kesempatan kali ini saya akan membahas bagaimana cara membuat Web Api dengan ASP.NET Core dengan menggunakan database MySQL. Jika anda sering sekali melihat pembuatan Web Api ini dengan Entity Framework , maka pendekatan kali ini menggunakan database yang sering digunakan yaitu MySQL.

Saya menggunakan Visual Studio Community untuk membuat web api ini. Ikuti langkah-langkah berikut.

Langkah 1
Buatlah sebuah project baru pilih Net Core -> ASP.NET Core Web Api kemudian next lalu berikan nama projectnya, pada kesempatan kali ini saya menggunakan nama IpungApi.

Langkah 2
Tunggu hingga proses inisiasi selesai, hingga anda mendapatkan struktur project.

Langkah 3
Pada project folder klik kanan -> add nuget packages -> pilih Pomelo.Data.MySQL lalu add packages dan tunggu hingga instalasi selesai.

Langkah 4
Karena kita akan menggunakan MySQL sebagai databasenya pastikan anda sudah membuat sebauh database dan tabelnya. Pada kesempatan ini saya membuat database dengan nama db_asp dengan tabel = users.

pada tabel users saya membuat 3 field antara lain bisa dilihat pada gambar














Langkah 5
Insert beberapa data agar tabel terisi boleh 2 atau lebih

Langkah 6
Pada folder project buat sebuah folder baru dengan nama Model, kemudian klik kanan Add new File pilih General -> Empty Class berikan nama User.cs sesuaikan dengan kode berikut


using System;
namespace IpungApi.Model
{
    public class User
    {
        public User()
        {
        }

        public int id
        {
            get;
            set;
        }

        public string username
        {
            get;
            set;
        }

        public string password
        {
            get;
            set;
        }
    }
}

Langkah 7
Buat kembali sebuah folder dengan nama Connector kemudian klik kanan add new files -> General -> Empty Class buat file dengan nama Conn.cs

using System;
using System.Collections.Generic;
using IpungApi.Model;
using Pomelo.Data.MySql;

namespace IpungApi.Connector
{
    public class Conn
    {
        private string connstring;

        public Conn()
        {
            connstring = @"server=127.0.0.1;userid=root;password=;database=db_asp";
        }

        public List<User> Userlist(){
            List<User> allUser = new List<User>();

            using(MySqlConnection connMysql = new MySqlConnection(connstring)){
                using (MySqlCommand cmdd = connMysql.CreateCommand()){
                    cmdd.CommandText = "Select * from users";
                    cmdd.CommandType = System.Data.CommandType.Text;

                    cmdd.Connection = connMysql;
                    connMysql.Open();

                    using(MySqlDataReader reader = cmdd.ExecuteReader()){
                        while(reader.Read()){
                            allUser.Add(new User{id=reader.GetInt32(reader.GetOrdinal("id"))
                                                          ,username=reader.GetString(reader.GetOrdinal("username"))
                                                                          ,password=reader.GetString(reader.GetOrdinal("password"))});
                        }
                    }
                }

                connMysql.Close();
            }

            return allUser;
        }




    }
}


Class ini tentunya akan menghubungkan ASP.Net dengan MySQL anda bisa cek kode berikut

public Conn()
        {
            connstring = @"server=127.0.0.1;userid=root;password=;database=db_asp";
        }

Kemudian kita buat sebuah method untuk mengambil data pada table mysql

public List<User> Userlist(){
            List<User> allUser = new List<User>();

            using(MySqlConnection connMysql = new MySqlConnection(connstring)){
                using (MySqlCommand cmdd = connMysql.CreateCommand()){
                    cmdd.CommandText = "Select * from users";
                    cmdd.CommandType = System.Data.CommandType.Text;

                    cmdd.Connection = connMysql;
                    connMysql.Open();

                    using(MySqlDataReader reader = cmdd.ExecuteReader()){
                        while(reader.Read()){
                            allUser.Add(new User{id=reader.GetInt32(reader.GetOrdinal("id"))
                                                          ,username=reader.GetString(reader.GetOrdinal("username"))
                                                                          ,password=reader.GetString(reader.GetOrdinal("password"))});
                        }
                    }
                }

                connMysql.Close();
            }

            return allUser;
        }


Langkah 8
Pada folder controller -> add new files -> pilih ASP.NET Core -> pilih MVC Controller Class berikan nama UserController.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using IpungApi.Connector;
using IpungApi.Model;
using Microsoft.AspNetCore.Mvc;

// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860

namespace IpungApi.Controllers
{
    [Route("api/[controller]")]
    public class UserController : Controller
    {
        // GET api/values
        [HttpGet]
        public IEnumerable<User> Get()
        {
            Conn mySqlGet = new Conn();
            return mySqlGet.Userlist();
        }

        // GET api/values/5
        [HttpGet("{id}")]
        public IEnumerable<User> Get(string Id) 
        {
            int userID= Convert.ToInt32(Id);  
            Conn mySqlGet = new Conn();
            return mySqlGet.Userlist().Where(s => s.id == userID); 
        }

        // POST api/values
        [HttpPost]
        public void Post([FromBody]string value)
        {
        }

        // PUT api/values/5
        [HttpPut("{id}")]
        public void Put(int id, [FromBody]string value)
        {
        }

        // DELETE api/values/5
        [HttpDelete("{id}")]
        public void Delete(int id)
        {
        }
    }
}

Yang perlu diperhatian pada code untuk mengambil semua data pada table user

// GET api/values
        [HttpGet]
        public IEnumerable<User> Get()
        {
            Conn mySqlGet = new Conn();
            return mySqlGet.Userlist();
        }

Serta code mengambil data berdasarkan ID

// GET api/values/5
        [HttpGet("{id}")]
        public IEnumerable<User> Get(string Id) 
        {
            int userID= Convert.ToInt32(Id);  
            Conn mySqlGet = new Conn();
            return mySqlGet.Userlist().Where(s => s.id == userID); 
        }

Untuk Method POST, PUT dan DELETE akan dilanjut tutorial selanjutnya ya.

Setelah selesai kita test dengan pilih Run-> Start Debugging maka anda akan diarahkan ke URL pada browser anda.  Maka anda akan mendapatkan alamat http://localhost:5000/api/user

Karena saya hanya menginput 2 data maka hasilnya adalah sebagai berikut

[
  • {
    • id1,
    • username"Ipung Purwono",
    • password"123"
    },
  • {
    • id2,
    • username"Puji Priono",
    • password"123"
    }
]

Demikianlah tutorial sederhana membuat web api dengan ASP.NET Core dan MySQL Semoga bermanfaat

Special Thanks to  Hardware Andro 

Salam

Ipung Purwono