ساخت Restful API برای اندروید و IOS با استفاده از Asp.net Web API 2

با نام خدا و سلام،

کاری که میخوام انجام بدم روی ویژوال استادیو 2017 و با استفاده از دیتابیس MySql هست.

 

1- قدم اول ساخت پروژه در ویژوال استادیو:

file->new->project از صفحه ی ساخت پروژه های جدید، template->c#-> web رو انتخاب کنید. و سپس ASP.NET Web Application رو انتخاب و نام مورد نظرتون برای پروژه رو انتخاب و next را بزنید.

2- از صفحه ی بعدی در میون template هایی که می توان انتخاب کرد، Web API رو انتخاب و next را بزنید.

3- حالا دیگه نوبت خود ویژوال استادیو هست که کارهای لازم رو میکنه و فایل ها و فولدر های مورد نیاز رو برامون می سازه.

4- پیش نیاز های اتصال Mysql به ویژوال رو از اینجا انجام بدید.

5- پس از اتصال DB موردنظر به ویژوال استادیو نوبت به ساخت مدل ها میرسه، از Solution explorer روی فولدر model راست کلیک کرده و Add->new item رو پیش برید.

6- حال از صفحه ی باز شده، از منوی درختی سمت چپ Visual C#->data رو انتخاب و از لیست نشان داده شده ADO.net entity data model را انتخاب کنید و Add را بزنید. برای نام مدل MessengerDbModel را وارد کنید. (به جای Messenger نام پایگاه داده خودتون رو بگذارید) 

7- در صفحه ی بعدی چون که کانکشت رو از MySql زده بودیم و DB ساخته شده بود ، EF Designer from database رو انتحاب و next را بزنید.

8- در صفحه ی بعدی که باز می شود، کانکشنی که ساخته بودید رو انتخاب و گزینه No exclude … رو انتخاب کنید و next را بزنید. نام messengeEntities پایین رو به messengerDbEntities تغییر دادم (باز جای messenger نام DB خودتون رو بگذارید)

9 – صفحه ی بعدی ورژن entity framework مورد نظرتون رو انتخاب و باز next  و تمام. (اگر پس از ساخت مدل ارور داشتید، شاید این پست کمکتون کنه) 

10 – اگر همه چیز رو درست پیش رفته باشید باید پس از اتمام مرحله 9 چنین صفحه ای براتون باز بشه (MessengerModel.edmx)

11- همچنین در فولدر models و زیر اون اسمی که برای مدلتون انتخاب کرده باشید باید برای هر table  از پایگاه دادتون یه class ساخته باشه، کلاسی مثه کلاس زیر:

//------------------------------------------------------------------------------
// <auto-generated>
//    This code was generated from a template.
//
//    Manual changes to this file may cause unexpected behavior in your application.
//    Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace MessengerApp.Models
{
    using System;
    using System.Collections.Generic;
    
    public partial class access
    {
        public int id { get; set; }
        public long users_id { get; set; }
        public string token { get; set; }
        public Nullable<System.DateTime> created_at { get; set; }
        public Nullable<System.DateTime> deleted_at { get; set; }
        public int devices_id { get; set; }
    
        public virtual user user { get; set; }
        public virtual device device { get; set; }
    }
}

 

12 – داخل web.Config نیز باید connection string اضافه شده باشه.

<connectionStrings>
    <add name="messengerDbEntities" connectionString="metadata=res://*/Models.MessengerModel.csdl|res://*/Models.MessengerModel.ssdl|res://*/Models.MessengerModel.msl;provider=Devart.Data.MySql;provider connection string=&quot;User Id=root;Password=5116360sS;Host=localhost;Database=messenger&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>

13 – از Solution explorer به این مسیر بروید:

solution explorer->webapplication->Models->MessengerModel.edmx->MessengerModel.Context.tt->MessengerModel.Context.cs

کلاس MessengerModel.Context.cs رو باز کنید:

//------------------------------------------------------------------------------
// <auto-generated>
//    This code was generated from a template.
//
//    Manual changes to this file may cause unexpected behavior in your application.
//    Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace MessengerApp.Models
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;
    
    public partial class messengerDbEntities : DbContext
    {
        public messengerDbEntities()
            : base("name=messengerDbEntities")
        {
        }
    
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }
    
        public DbSet<access> accesses { get; set; }
      
    }
}

به ازای هز table از Db یک خط وجود دارد، برای مثال برای جدول access داریم:

public DbSet<access> accesses { get; set; }

این کلاس مسئولیت ایجاد اتصال بین DB رو داره، با داشتن این کلاس اتصال به DB تکمیل شده است.

 

 

15 – تا اینجا دیگه کانفیگ کردن ها انجام شده از اینجا به بعد دیگه نیازمندی های خودمون رو باید پیاده سازی کنیم،

اول از همه باید یک کنترلر جدید به اپلیکیشن اضافه کنیم. نام کنترلر رو UserApiController می گذاریم،

  • روی فولدر controller راست کلیک کرده
  • از منوی باز شده Add
  • سپس Controller…  رو کلیک می کنیم
  • صفحه ی  Add Scaffold باز میشه.
  • در این صفحه Web API 2 Controller – with actions use entity frameworkرو انتخاب می کنیم.
  • Add را می زنیم.
  • از Model Class اون کلاسی که میخواهیم براش API بسازیم رو انتخاب می کنیم.
  • از Data Context Class نیز Context ساخته شده رو انتخاب می کنیم.
  • اسم کنترلر رو نیز من گذاشتم همون اسم پیش فرض پیشنهادی خود ویژوال باشه 
  • در انتها نیز Add را میزنیم.

 

 

ادامه دارد …