ABP Framework ile Ad?m Ad?m Yaz?l?m Geli?tirme ? B?l?m?6: API Katman? Geli?tirme

Admin 

Modern uygulamalarda API (Application Programming Interface) katman?, hem istemci uygulamalar (mobil, web) hem de di?er servislerle ileti?im kurmak i?in kritik ?neme sahiptir. ABP Framework, g??l? ve kolay yap?land?r?labilir bir API katman? olu?turman?z? sa?lar. Bu b?l?mde, ABP’nin API geli?tirme ?zelliklerini ve en iyi pratikleri inceleyece?iz.

Auto API Controller ?zellikleri

ABP Framework’?n en kullan??l? ?zelliklerinden biri Auto API Controllers‘d?r. E?er bir uygulama servisi IApplicationService aray?z?n? implemente ediyorsa ve uygun kurallara uyuyorsa, ABP otomatik olarak bu servis i?in bir ASP.NET Core API denetleyicisi olu?turur. Bu, manuel olarak denetleyici (controller) yazma ihtiyac?n? ortadan kald?r?r ve geli?tirme h?z?n? art?r?r.

  • BookAppService (Bkz. B?l?m 5) gibi bir servis, otomatik olarak bir Books API denetleyicisine d?n??t?r?l?r ve /api/app/books gibi endpoint’ler olu?turulur.
  • CRUD operasyonlar? (Get, GetList, Create, Update, Delete) i?in HTTP metotlar? (GET, POST, PUT, DELETE) otomatik olarak e?le?tirilir.

API Endpoint’lerin ?zelle?tirilmesi

Otomatik API denetleyicileri b?y?k kolayl?k sa?lasa da, bazen endpoint’leri veya HTTP metotlar?n? ?zelle?tirmek isteyebilirsiniz. Bunu ?e?itli yollarla yapabilirsiniz:

  • [RemoteService(IsEnabled = false)]: Uygulama servisinin otomatik API endpoint’leri olu?turmas?n? engeller.
  • [Route("api/my-custom-path/books")]: Otomatik olarak olu?turulan rota (route) yolunu ?zelle?tirir.
  • [HttpMethod(HttpVerb.Get)] veya [HttpGet]: Uygulama servis metotlar?na do?rudan HTTP metot nitelikleri ekleyerek HTTP fiilini ve hatta ?zel rotalar? belirleyebilirsiniz.

?rnek:

C#

using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.Application.Services;
using Volo.Abp.AspNetCore.Mvc.Annotations; // [HttpMethod] i?in

public class BookAppService : ApplicationService, IBookAppService
{
    // ...

    [HttpGet] // GET metodu olarak ayarlar
    [Route("api/app/books/by-type/{type}")] // ?zel rota belirleme
    public async Task<List<BookDto>> GetBooksByTypeAsync(BookType type)
    {
        var books = await _bookRepository.GetListAsync(b => b.Type == type);
        return ObjectMapper.Map<List<Book>, List<BookDto>>(books);
    }
}

Swagger Entegrasyonu ve API Dok?mantasyonu

ABP Framework, API’leriniz i?in otomatik olarak Swagger (OpenAPI) dok?mantasyonu olu?turur ve bunu yay?nlar. Bu, API’lerinizi kolayca test etmenizi ve anla??l?r bir ?ekilde belgelendirmenizi sa?lar.

  • YourProjectName.Web veya YourProjectName.HttpApi projesinde SwaggerModule veya benzeri bir yap?land?rma ile Swagger UI etkinle?tirilir.
  • Uygulaman?z? ?al??t?rd???n?zda /swagger adresine giderek API dok?mantasyonunu ve test aray?z?n? g?rebilirsiniz.
  • XML dok?mantasyonu aktif edilerek, uygulama servis metotlar?n?za ve DTO’lar?n?za ekledi?iniz yorumlar Swagger UI’da g?r?nt?lenebilir.

API Versiyonlama

Uygulaman?z b?y?d?k?e veya harici t?keticilerle payla?t?k?a API versiyonlama ?nemli hale gelir. ABP Framework, ASP.NET Core’un yerle?ik API versiyonlama mekanizmalar?n? destekler (URI, sorgu dizesi, ba?l?k).

  • URI Versiyonlama (?nerilen): [ApiVersion("1.0")] niteli?i ve rota tan?mlamalar?nda {version:apiVersion} placeholder’? kullan?l?r.
  • YourProjectNameHttpApiHostModule veya benzeri bir mod?lde versiyonlama se?enekleri yap?land?r?l?r.

C#

// Controller'da versiyonlama
[ApiVersion("1.0")]
[Route("api/v{version:apiVersion}/app/books")]
public class BookAppService : ApplicationService, IBookAppService
{
    // ...
}

Request ve Response Formatlar?

ABP Framework, JSON format?n? varsay?lan olarak destekler. HTTP POST/PUT isteklerinde JSON payload’lar?n? otomatik olarak DTO’lara ba?lar ve API yan?tlar?n? JSON olarak d?nd?r?r. ?htiya? halinde XML veya di?er formatlar da yap?land?r?labilir.

API G?venlik Ayarlar? (CORS, Authentication)

API katman?, uygulaman?z?n g?venli?ini sa?lamak i?in kritik ?neme sahiptir.

  • CORS (Cross-Origin Resource Sharing): Farkl? bir alan ad?ndan gelen JavaScript isteklerinin API’nize eri?mesine izin vermek i?in kullan?l?r. appsettings.json veya YourProjectNameWebModule/YourProjectNameHttpApiHostModule i?inde CORS politikalar? tan?mlan?r. C#// YourProjectNameWebModule.cs'de veya HttpApiHostModule.cs'de public override void ConfigureServices(ServiceConfigurationContext context) { // ... context.Services.AddCors(options => { options.AddDefaultPolicy(builder => { builder .WithOrigins( configuration["App:CorsOrigins"] .Split(",", StringSplitOptions.RemoveEmptyEntries) .ToArray() ) .WithAbpExposedHeaders() .SetIsOriginAllowedToAllowWildcardSubdomains() .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials(); }); }); // ... }
  • Authentication (Kimlik Do?rulama): Kullan?c?n?n kimli?ini do?rulamak i?in kullan?l?r. ABP, Identity Server (OpenIddict) ile tam entegrasyon sunar (Bkz. B?l?m 8). API’ler genellikle JWT (JSON Web Token) tabanl? kimlik do?rulama kullan?r.
  • Authorization (Yetkilendirme): Kimli?i do?rulanm?? bir kullan?c?n?n belirli bir kayna?a eri?im veya bir i?lemi yapma yetkisine sahip olup olmad???n? kontrol eder. [Authorize] niteli?i veya politika tabanl? yetkilendirme kullan?l?r. C#using Microsoft.AspNetCore.Authorization; public class BookAppService : ApplicationService, IBookAppService { [Authorize(MyProjectPermissions.Books.Create)] // Sadece belirli bir izni olan kullan?c?lar eri?ebilir public async Task<BookDto> CreateAsync(CreateUpdateBookDto input) { // ... } }

API Testleri ve Postman Koleksiyonu Olu?turma

API katman?n? geli?tirdikten sonra, do?ru ?al??t???ndan emin olmak i?in test etmek ?nemlidir.

  • Unit/Integration Testler: ABP’nin test altyap?s?n? kullanarak uygulama servislerinizi veya API denetleyicilerinizi test edebilirsiniz (Bkz. B?l?m 14).
  • Postman/Insomnia: Pop?ler API test ara?lar? olan Postman veya Insomnia ile API endpoint’lerinize manuel istekler g?nderebilir ve yan?tlar? inceleyebilirsiniz.
  • Postman Koleksiyonlar?: Tekrarlayan testler i?in Postman koleksiyonlar? olu?turarak, API testlerinizi d?zenli ve otomatize edebilirsiniz. Otomatik olarak olu?turulan API endpoint’leri sayesinde Swagger UI’dan do?rudan Postman koleksiyonu d??a aktarabilirsiniz.

API katman?, uygulaman?z?n d?? d?nyaya a??lan y?z?d?r ve do?ru bir ?ekilde tasarlanmas? ve g?venli?inin sa?lanmas? b?y?k ?nem ta??r.

Recommended Posts

Bilgi G?venli?i

Sosyal M?hendislik

” Bir bilgisayar sistemini hacklemek zor olabilir. Ama bir insan? kand?rmak ?o?u zaman ?ok daha kolayd?r. “ ??te sosyal m?hendislik tam olarak burada devreye girer. G?n?m?zde bir?ok siber sald?r?, karma??k yaz?l?mlardan ?ok insan psikolojisini hedef al?r. ??nk? en g??l? g?venlik sistemleri bile, yanl?? ki?iye verilen tek bir ?ifreyle etkisiz hale gelebilir. Sosyal m?hendislik; insanlar?n g?ven, […]

Admin 

ABP Framework ile Ad?m Ad?m Yaz?l?m Geli?tirme ? B?l?m 7: Kullan?c? Aray?z? Geli?tirme

Uygulaman?n kullan?c?larla etkile?im kurdu?u katman olan Kullan?c? Aray?z? (UI) Katman?, genellikle ASP.NET Core MVC (Razor Pages), Angular veya Blazor gibi teknolojilerle geli?tirilir. ABP Framework, se?ti?iniz UI teknolojisiyle sorunsuz entegrasyon sa?layarak geli?tirme s?recinizi h?zland?r?r ve ortak UI ihtiya?lar?n? kar??lar. Bu b?l?mde, ABP ile kullan?c? aray?z? geli?tirmenin temel y?nlerini ele alaca??z. Se?ilen UI Teknolojisine G?re Temel Yap?land?rma […]

Admin 

ABP Framework ile Ad?m Ad?m Yaz?l?m Geli?tirme ? B?l?m?6: API Katman? Geli?tirme

Modern uygulamalarda API (Application Programming Interface) katman?, hem istemci uygulamalar (mobil, web) hem de di?er servislerle ileti?im kurmak i?in kritik ?neme sahiptir. ABP Framework, g??l? ve kolay yap?land?r?labilir bir API katman? olu?turman?z? sa?lar. Bu b?l?mde, ABP’nin API geli?tirme ?zelliklerini ve en iyi pratikleri inceleyece?iz. Auto API Controller ?zellikleri ABP Framework’?n en kullan??l? ?zelliklerinden biri Auto […]

Admin 

Leave A Comment