একটি Web API সার্ভিস পাবলিক হলে, বিভিন্ন ক্লায়েন্ট অ্যাপ্লিকেশন আমাদের Web API সার্ভিসগুলো ব্যবহার শুরু করে। বিসিনেস বৃদ্ধি পেলে এবং রিকোয়ারমেন্ট পরিবর্তন হলে, আমাদের সার্ভিসগুলোও পরিবর্তন করতে হতে পারে, কিন্তু সার্ভিসগুলোর পরিবর্তন এমনভাবে করা উচিত যাতে কোনো এক্সিস্টিং ক্লায়েন্ট অ্যাপ্লিকেশন ব্রেক না হয়।
এই সময় Web API ভার্সনিং সাহায্য করে। আমরা এক্সিস্টিং সার্ভিসগুলো যেনা রেখে দিই (তाकি এক্সিস্টিং ক্লায়েন্ট অ্যাপ্লিকেশন ব্রেক না হয়), এবং সার্ভিসের একটি নতুন ভার্সন ডেভেলপ করি যা নতুন ক্লায়েন্ট অ্যাপ্লিকেশনগুলো ব্যবহার করতে পারবে।
ভার্সনিং ইমপ্লিমেন্ট করার একটি অপশন হলো URI ব্যবহার করা। নিচে উদাহরণ দেওয়া হলো কীভাবে ইমপ্লিমেন্ট করতে হয়।
উদাহরণ
চলুন ভার্সন ১ (V1) এর একটি স্টুডেন্ট কন্ট্রোলার বিবেচনা করি যাতে নিচের একশন মেথডগুলো থাকে।
Student Model V1
namespace DemoWebApplication.Models
{
public class StudentV1
{
public int Id { get; set; }
public string Name { get; set; }
}
}
Student Controller V1
using DemoWebApplication.Models;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace DemoWebApplication.Controllers
{
public class StudentV1Controller : ApiController
{
List students = new List
{
new StudentV1 { Id = 1, Name = "Mark" },
new StudentV1 { Id = 2, Name = "John" }
};
[Route("api/v1/students")]
public IEnumerable Get()
{
return students;
}
[Route("api/v1/students/{id}")]
public StudentV1 Get(int id)
{
var studentForId = students.FirstOrDefault(x => x.Id == id);
return studentForId;
}
}
}
উপরের উদাহরণে আমরা অ্যাট্রিবিউট রাউটিং ব্যবহার করে ভার্সনিং ইমপ্লিমেন্ট করেছি। উপরের উদাহরণের আউটপুট নিচে দেখানো হলো:


এখন মান লেই স্টুডেন্ট কন্ট্রোলারে, বিসিনেস শুধু নতুন ইউজারদের জন্য একটি নতুন পরিবর্তন প্রস্তাব করেছে এবং এক্সিস্টিং ইউজাররা এখনও ভার্সন ১ ব্যবহার করবে। এই কেসে আমাদের ভার্সন ২ (V2) ইন্ট্রোডিউস করতে হবে।
Student Model V2
namespace DemoWebApplication.Models
{
public class StudentV2
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
}
Student Controller V2
using DemoWebApplication.Models;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace DemoWebApplication.Controllers
{
public class StudentV2Controller : ApiController
{
List students = new List
{
new StudentV2 { Id = 1, FirstName = "Roger", LastName = "Federer" },
new StudentV2 { Id = 2, FirstName = "Tom", LastName = "Bruce" }
};
[Route("api/v2/students")]
public IEnumerable Get()
{
return students;
}
[Route("api/v2/students/{id}")]
public StudentV2 Get(int id)
{
var studentForId = students.FirstOrDefault(x => x.Id == id);
return studentForId;
}
}
}
আউটপুট
উপরের উদাহরণের আউটপুট নিচে দেখানো হলো।

