RESTful Web Servisleri Nedir?
REST (Representational State Transfer), web servislerinin HTTP protokolü üzerinden veri alışverişi yapmasını sağlayan bir mimaridir.
1.RESTful Web Servisleri Nedir?
REST (Representational State Transfer), web servislerinin HTTP protokolü üzerinden veri alışverişi yapmasını sağlayan bir mimaridir. RESTful servisler, genellikle JSON veya XML formatında veri döndürür ve alır.
REST ve SOAP Arasındaki Farklar
- REST hafif ve kolay kullanımlıdır, SOAP ise daha ağırdır ve genellikle daha karmaşık işlemler için kullanılır.
- REST HTTP protokolünü kullanır, SOAP ise genellikle farklı protokoller (örneğin, SMTP) kullanabilir.
REST’in Avantajları
- Basit ve hafif bir mimaridir.
- HTTP protokolü kullanıldığı için web üzerinde yaygın olarak desteklenir.
- JSON kullanarak veri transferi yapılır, bu da veri alışverişini hızlı ve verimli hale getirir.
2.C# ile RESTful Web Servisi Oluşturma
Gerekli Kütüphaneler ve Ortam Kurulumu
- .NET SDK: İndirin
- Visual Studio veya Visual Studio Code: Visual Studio | Visual Studio Code
Basit Bir RESTful Servisi Oluşturma (ASP.NET Core Kullanarak)
Proje Oluşturma
- Terminal veya komut istemcisini açın.
- Aşağıdaki komutu kullanarak yeni bir ASP.NET Core Web API projesi oluşturun:
dotnet new webapi -n RestfulWebService
cd RestfulWebService
Startup.cs
Dosyasını Ayarlama
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
ContactController.cs
Oluşturma
Controllers
klasörü altında ContactController.cs
adında bir dosya oluşturun ve aşağıdaki kodu ekleyin:
using Microsoft.AspNetCore.Mvc;
using System.Collections.Concurrent;
namespace RestfulWebService.Controllers
{
[ApiController]
[Route("api/contacts")]
public class ContactController : ControllerBase
{
private static ConcurrentDictionary<string, Contact> contacts = new ConcurrentDictionary<string, Contact>();
[HttpGet]
public ActionResult<ConcurrentDictionary<string, Contact>> GetContacts()
{
return contacts;
}
[HttpPost]
public ActionResult<Contact> AddContact([FromBody] Contact contact)
{
contacts[contact.Id] = contact;
return contact;
}
[HttpPut("{id}")]
public ActionResult<Contact> UpdateContact(string id, [FromBody] Contact contact)
{
contacts[id] = contact;
return contact;
}
[HttpDelete("{id}")]
public ActionResult<Contact> DeleteContact(string id)
{
contacts.TryRemove(id, out var removedContact);
return removedContact;
}
}
public class Contact
{
public string Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
}
}
3. RESTful Servislerinin Test Edilmesi
Postman ile Test
- Postman’i indirip kurun: Postman
GET
,POST
,PUT
,DELETE
isteklerini test etmek için Postman’i kullanın.
Unit Test Yazma
ASP.NET Core projelerinde unit test yazmak için genellikle xUnit veya NUnit gibi test framework’leri kullanılır.
ContactControllerTests.cs
Proje dizininde tests
adında bir klasör oluşturun. Bu klasör altında ContactControllerTests.cs
adında bir dosya oluşturun ve aşağıdaki kodu ekleyin:
using Microsoft.AspNetCore.Mvc;
using RestfulWebService.Controllers;
using System.Collections.Concurrent;
using Xunit;
public class ContactControllerTests
{
[Fact]
public void GetContacts_ReturnsEmptyDictionary()
{
// Arrange
var controller = new ContactController();
// Act
var result = controller.GetContacts();
// Assert
Assert.IsType<ActionResult<ConcurrentDictionary<string, Contact>>>(result);
Assert.Empty(result.Value);
}
[Fact]
public void AddContact_ReturnsContact()
{
// Arrange
var controller = new ContactController();
var contact = new Contact { Id = "1", Name = "John Doe", Email = "john.doe@example.com" };
// Act
var result = controller.AddContact(contact);
// Assert
Assert.IsType<ActionResult<Contact>>(result);
Assert.Equal(contact, result.Value);
}
}
Hataların Giderilmesi ve Debugging İpuçları
- Hataları ve istisnaları yakalamak için
try-catch
blokları kullanın. ILogger
arayüzünü kullanarak loglama yapın.
4. Sonuç
RESTful servisleri modern web uygulamaları için kritik öneme sahiptir. Bu rehberde C# kullanarak nasıl RESTful servisler oluşturabileceğinizi ve test edebileceğinizi öğrendiniz. Daha fazla bilgi için resmi ASP.NET Core belgelerini inceleyebilirsiniz: ASP.NET Core Documentation.