Hazırlanan bir Restful yapıyı diğer programların ve platformların kullanabilmesi için belli başlı bazı özellikleri bilmesi gerekir. Url adresi, erişim metodu, bilgilerin hangi formatta ve hangi örüntüyle istendiği gibi birçok yöntemin programcıya verilmesi gerekir. Swagger paketi hazırlanan bir projede sözü ettiğimiz tüm bilgilerin hazırlanması için kullanılır. API projesine sağ tıklayıp Manage NuGet kısmına giriyoruz. NSwag.AspNetCore kütüphanesini projemize ekleyelim.
Kurulum bittikten sonra startup dosyasına gelelim. Aşağıdaki gibi değişiklikleri yapalım.
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddSingleton<IUserServices, UserManager>();
services.AddSingleton<IUserRepository, UserRepository>();
services.AddSwaggerDocument(); // burası
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseOpenApi(); // burası
app.UseSwaggerUi3(); // burası
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
Projemizi çalıştırdığımızda ...../swagger diyerek arayüzü ekrana getirebiliriz. Burada gerekli bilgiler sunulmaktadır. Şimdi açıklamaları ekleyelim. Metodların başına gelelim ve /// yazalım. Bunu yazdığımızda bize bir açıklama kısmı gelecektir. Buraya açıklamaları yazabiliriz.
/// <summary>
/// Tüm kullanıcıları listeler
/// </summary>
/// <returns></returns>
[HttpGet]
public List<User> Get()
{
return _userService.GetUserAll();
}
/// <summary>
/// Id değeri verilen kullanıcıyı listeler
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("{id}")]
public User Get(int id)
{
return _userService.GetUserById(id);
}
/// <summary>
/// Yeni bir kullanıcı ekler
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
[HttpPost]
public User Post([FromBody] User user)
{
return _userService.CreateUser(user);
}
/// <summary>
/// Id değeri verilen kullanıcının bilgilerini günceller
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
[HttpPut]
public User Put([FromBody] User user)
{
return _userService.UpdateUser(user);
}
/// <summary>
/// Id değeri verilen kullanıcıyı siler
/// </summary>
/// <param name="id"></param>
[HttpDelete("{id}")]
public void Delete(int id)
{
_userService.DeleteUser(id);
}
Bunun ekranda görüntülenebilmesi için Projenin properties kısmına gelelim. Burada Build sekmesinde XML documentation file sekmesini işaretleyelim. Artık mesajlar görüntülenecektir. Web sayfasındaki başlıkları ve diğer kısımları kendinize göre değiştirebilirsiniz. Şimdi onları yapalım.
Aşağıdaki kodları startup dosyasında düzenleyelim.
services.AddSwaggerDocument(config =>
{
config.PostProcess = (doc =>
{
doc.Info.Title = "All Users API";
doc.Info.Version = "1.0.15";
doc.Info.Contact = new NSwag.OpenApiContact()
{
Name = "Hasan Kızıltuğ",
Url = "https://www.maarificedid.com/",
Email = "hasankiziltug@hotmail.com"
};
});
}); // burası