
RestSharp C# (Geliştiriciler için Nasıl Çalışır)
RestSharp, C#'ta HTTP istekleri oluşturmak için popüler bir açık kaynak .NET kütüphanesidir. RESTful API'ler ile çalışmayı basitleştirir, web servisleriyle iletişim kurmanın basit ve esnek bir yolunu sunar. Bu makalede, RestSharp ve IronPDF'in önemli özelliklerini inceleyeceğiz ve nasıl veri çıkarılacağını ve PDF oluşturulacağını göstereceğiz.
Neden RestSharp?
Modern, çok katmanlı uygulamalarda, farklı servislerin sık sık birbiriyle iletişim kurması gerekir ve RestSharp, tüm karmaşıklıkları kapsayarak basit ve verimli bir yol sunar. Bu, yazılım geliştirme sürecini büyük ölçüde basitleştirir.
RestSharp Kurulumu
RestSharp, bir NuGet paketi olarak mevcuttur ve C# projenize kurulabilir. Bunu NuGet Paket Yöneticisi Konsolu veya Visual Studio NuGet Paket Yöneticisi UI kullanarak yapabilirsiniz.
Basit GET İstekleri Yapma
RestSharp kullanarak RESTful API'ye GET isteği yapmanın basit bir örneğiyle başlayalım. Diyelim ki kullanıcı verilerini döndüren bir genel ASP.NET çekirdek API'sinden bilgi almak istiyoruz:
using RestSharp;
namespace rest_sharp_demo
{
class Program
{
static void Main()
{
// Base URL for the REST API
var baseUrl = "https://jsonplaceholder.typicode.com/users";
// Create a RestClientOptions with default credentials
var options = new RestClientOptions(baseUrl) { UseDefaultCredentials = true };
var client = new RestClient(options);
// Create a RestRequest for the GET method
var request = new RestRequest();
// Execute the request and get the response
var response = client.Get(request);
// Check if the request was successful
if (response.IsSuccessful)
{
// Output the response body content
Console.WriteLine(response.Content);
}
else
{
// Handle the error
Console.WriteLine($"Error: {response.ErrorMessage}");
}
}
// Additional method to log data
public void LogData(string msg)
{
Console.WriteLine(msg);
}
}
}Imports RestSharp
Namespace rest_sharp_demo
Class Program
Shared Sub Main()
' Base URL for the REST API
Dim baseUrl = "https://jsonplaceholder.typicode.com/users"
' Create a RestClientOptions with default credentials
Dim options = New RestClientOptions(baseUrl) With {
.UseDefaultCredentials = True
}
Dim client = New RestClient(options)
' Create a RestRequest for the GET method
Dim request = New RestRequest()
' Execute the request and get the response
Dim response = client.Get(request)
' Check if the request was successful
If response.IsSuccessful Then
' Output the response body content
Console.WriteLine(response.Content)
Else
' Handle the error
Console.WriteLine($"Error: {response.ErrorMessage}")
End If
End Sub
' Additional method to log data
Public Sub LogData(msg As String)
Console.WriteLine(msg)
End Sub
End Class
End NamespaceRestSharp, asenkron istekleri ve yanıtları async API yöntemleri kullanarak da destekler.
Yanıt Verilerini İşleme
RestSharp, yanıt içeriğini C# nesnelerine deserializasyon için kullanışlı yöntemler sağlar. JSON yanıt verilerini bir kullanıcı nesneleri listesine deserializasyon etmek için örneğimizi genişletelim:
// Deserialize JSON response into a list of User objects
var users = JsonSerializer.Deserialize<List<User>>(response.Content);
// Output user information
foreach (var user in users)
{
Console.WriteLine($"User ID: {user.Id}, Name: {user.Name}, Email: {user.Email}");
}' Deserialize JSON response into a list of User objects
Dim users = JsonSerializer.Deserialize(Of List(Of User))(response.Content)
' Output user information
For Each user In users
Console.WriteLine($"User ID: {user.Id}, Name: {user.Name}, Email: {user.Email}")
Next userBu örnekte, JSON alanlarına karşılık gelen özelliklere sahip bir User sınıfı tanımladık. System.Text.Json namespacesinden JsonSerializer.Deserialize kullandık.
public class User
{
[JsonPropertyName("company")]
public Company Company { get; set; }
[JsonPropertyName("id")]
public int Id { get; set; }
[JsonPropertyName("phone")]
public string Phone { get; set; }
[JsonPropertyName("website")]
public string Website { get; set; }
[JsonPropertyName("name")]
public string Name { get; set; }
[JsonPropertyName("username")]
public string Username { get; set; }
[JsonPropertyName("email")]
public string Email { get; set; }
[JsonPropertyName("address")]
public Address Address { get; set; }
}Public Class User
<JsonPropertyName("company")>
Public Property Company As Company
<JsonPropertyName("id")>
Public Property Id As Integer
<JsonPropertyName("phone")>
Public Property Phone As String
<JsonPropertyName("website")>
Public Property Website As String
<JsonPropertyName("name")>
Public Property Name As String
<JsonPropertyName("username")>
Public Property Username As String
<JsonPropertyName("email")>
Public Property Email As String
<JsonPropertyName("address")>
Public Property Address As Address
End ClassÇıktı
Tüm kullanıcı kimlikleri ve isimleri çıktıda gösterilir.

Tüm kod, Git bu bağlantıda mevcuttur.
İçerik Türü
RestSharp, XML veya JSON gövde isteklerini göndermeyi destekler. AddJsonBody veya AddXmlBody yöntemleri, JSON veya XML gövdesi eklemek için RestRequest örneğinde kullanılabilir. RestSharp içerik türünü otomatik olarak belirler. JSON veya XML yanıtlarını otomatik olarak işler.
// Serialize the user object to JSON
var jsonBodyString = JsonSerializer.Serialize(newUser);
// Create a RestRequest for the POST method with the JSON request data
var requestData = new RestRequest().AddJsonBody(jsonBodyString);
var response = client.ExecutePost(requestData);' Serialize the user object to JSON
Dim jsonBodyString = JsonSerializer.Serialize(newUser)
' Create a RestRequest for the POST method with the JSON request data
Dim requestData = (New RestRequest()).AddJsonBody(jsonBodyString)
Dim response = client.ExecutePost(requestData)POST İstekleri ile Veri Gönderme
RestSharp, istek gövdesinde veri göndermeyi de destekler, bu kaynak oluşturulurken veya güncellenirken yaygındır. Örneğimizi, bir POST istek API'si göstermek için değiştirelim:
using RestSharp;
using System.Text.Json;
namespace rest_sharp_demo
{
class Program
{
static void Main()
{
var client = new RestClient("https://jsonplaceholder.typicode.com/users");
// New user object
var newUser = new User
{
Name = "John Doe",
Email = "john.doe@example.com"
};
// Serialize the user object to JSON
var jsonBody = JsonSerializer.Serialize(newUser);
// Create a RestRequest for the POST method with the JSON request body
var request = new RestRequest().AddJsonBody(jsonBody);
// Execute the POST request
var response = client.ExecutePost(request);
// Check if the request was successful
if (response.IsSuccessful)
{
// Output the response content
Console.WriteLine(response.Content);
}
else
{
Console.WriteLine($"Error: {response.ErrorMessage}");
}
}
}
}Imports RestSharp
Imports System.Text.Json
Namespace rest_sharp_demo
Class Program
Shared Sub Main()
Dim client = New RestClient("https://jsonplaceholder.typicode.com/users")
' New user object
Dim newUser = New User With {
.Name = "John Doe",
.Email = "john.doe@example.com"
}
' Serialize the user object to JSON
Dim jsonBody = JsonSerializer.Serialize(newUser)
' Create a RestRequest for the POST method with the JSON request body
Dim request = New RestRequest().AddJsonBody(jsonBody)
' Execute the POST request
Dim response = client.ExecutePost(request)
' Check if the request was successful
If response.IsSuccessful Then
' Output the response content
Console.WriteLine(response.Content)
Else
Console.WriteLine($"Error: {response.ErrorMessage}")
End If
End Sub
End Class
End NamespaceBu örnekte, yeni bir User nesnesi oluşturup, JSON'a serileştiriyoruz ve AddJsonBody metodunu kullanarak istek gövdesine ekliyoruz. Sunucu, JSON verilerini alır ve isteği uygun şekilde işler.
Çıktı

Kimlik Doğrulama
RestSharp, kimlik doğrulama ile istek göndermeyi de destekler. RestClientOptions doğrulama parametrelerini içerebilir.
var options = new RestClientOptions("https://auth.net")
{
Authenticator = new HttpBasicAuthenticator(_clientId, _clientSecret)
};Dim options = New RestClientOptions("https://auth.net") With {.Authenticator = New HttpBasicAuthenticator(_clientId, _clientSecret)}Burada, her istekte gönderilen temel istemci kimliği gizli kimlik doğrulamasını kullanıyoruz.
Hata Yönetimi
RestSharp, URL istekleri sırasında meydana gelen hata durumlarını, zaman aşımı, kimlik doğrulama veya yetkilendirme hatalarını ele alabilir. RestSharp, istek başarısız olursa otomatik olarak bir istisna atmaz. Manuel olarak yapılandırılması gerekir.
Aşağıdaki hata işleme yapılandırmaları yapılabilir:
- FailOnDeserializationError: Bu özelliği true olarak ayarlamak, RestSharp'a başarısız deserializasyonu bir hata olarak değerlendirmesi gerektiğini ve buna uygun olarak
ResponseStatusdeğeriniErrorolarak ayarlamasını söyler. - ThrowOnDeserializationError: Bu özelliği true olarak ayarlamak, deserializasyon başarısız olduğunda RestSharp'a atmasını söyler.
- ThrowOnAnyError: Herhangi bir istek hatası veya deserializasyon sırasında herhangi bir hata meydana gelirse bir istisna fırlatır.
var restClientOptions = new RestClientOptions(url)
{
ThrowOnAnyError = true
};
var client = new RestClient(restClientOptions);Dim restClientOptions As New RestClientOptions(url) With {.ThrowOnAnyError = True}
Dim client = New RestClient(restClientOptions)IronPDF Tanıtımı
IronPDF, Iron Software'den C# için bir PDF kütüphanesidir ve PDF belgelerini okumaya ve üretmeye yardımcı olur. Stil bilgilerini içeren kolayca biçimlendirilmiş belgeleri PDF'ye dönüştürebilir. IronPDF, HTML içeriğinden kolayca PDF'ler üretebilir; HTML'yi bir URL'den indirip sonra PDF'ye dönüştürebilir.
IronPDF'in kilit özelliği, tüm düzenlerinizi ve stillerinizi koruyarak HTML'den PDF'ye dönüşüm yapmasıdır. Web içeriğini PDF'lere dönüştürür, bu da onu raporlar, faturalar ve belgeler için ideal kılar. HTML dosyaları, URL'ler ve HTML dizgileri kolayca PDF'lere dönüştürülebilir.
using IronPdf;
class Program
{
static void Main(string[] args)
{
// Create a PDF renderer using Chrome
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Create a PDF renderer using Chrome
Dim renderer = New ChromePdfRenderer()
' 1. Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' 2. Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' 3. Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End ClassIronPDF Kütüphanesini Yükleyin
NuGet Paket yöneticisini kullanarak IronPDF'i Selenium RestSharp projenize entegre etmek için bu adımları izleyin:
- Visual Studio'yu açın ve Çözüm Gezgini'nde projenize sağ tıklayın.
- Bağlam menüsünden "NuGet Paketlerini Yönet..." seçeneğini seçin.
- Gözat sekmesine gidin ve IronPDF'i arayın.
- Arama sonuçlarından IronPDF kütüphanesini seçin ve yükle düğmesine tıklayın.
- Herhangi bir lisans anlaşması istemini kabul edin.
IronPDF'i Proje Yöneticisi Konsolu üzerinden projenize dahil etmek istiyorsanız, Proje Yöneticisi Konsolu'nda aşağıdaki komutu çalıştırın:
Bu, IronPDF'yi projenize getirip kuracaktır.
NuGet Web Sitesini Kullanarak Kurulum
IronPDF'nin özellikleri, uyumluluğu ve ek indirme seçenekleri dahil olmak üzere detaylı bir genel bakış için IronPDF sayfasını https://www.nuget.org/packages/IronPdf adresindeki NuGet web sitesinde ziyaret edin.
DLL Kullanarak Kurulum
Alternatif olarak, IronPDF'i doğrudan projenize DLL dosyasını kullanarak dahil edebilirsiniz. DLL içeren ZIP dosyasını IronPDF İndir bağlantısından indirin. Zip'i açın ve DLL'yi projenize dahil edin.
Şimdi tüm kullanıcıları alıp HTML string'i ve IronPDF jeneratörü kullanarak bir PDF raporu oluşturacağız.
using System.Text.Json;
using System.Text.Json.Serialization;
using RestSharp;
using IronPdf;
namespace rest_sharp_demo
{
class Program
{
static void Main()
{
// Create a RestClient
var baseUrl = "https://jsonplaceholder.typicode.com/users";
RestClientOptions options = new RestClientOptions(baseUrl) { UseDefaultCredentials = true };
var client = new RestClient(options);
// Create a RestRequest for the GET method
var request = new RestRequest();
// Execute the request and get the response
var response = client.Get(request);
// Check if the request was successful
if (response.IsSuccessful)
{
// Deserialize JSON response into a list of User objects
var users = JsonSerializer.Deserialize<List<User>>(response.Content);
// Generate PDF
var html = GetHtml(users);
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("UsersReport.pdf");
}
else
{
// Handle the error
Console.WriteLine($"Error: {response.ErrorMessage}");
}
}
// Method to generate HTML from user data
private static string GetHtml(List<User>? users)
{
string header = @"
<html>
<head><title>Users List</title></head>
<body>
";
var footer = @"
</body>
</html>";
var htmlContent = header;
foreach (var user in users)
{
htmlContent += $@"
<h1>{user.Name}</h1>
<p>Username: {user.Username}</p>
<p>Email: {user.Email}</p>
<p>Company: {user.Company}</p>
<p>Phone: {user.Phone}</p>
<p>Website: {user.Website}</p>
<p>Suite: {user.Address.Suite}</p>
<p>Street: {user.Address.Street}</p>
<p>City: {user.Address.City}</p>
<p>Zipcode: {user.Address.Zipcode}</p>
";
}
htmlContent += footer;
return htmlContent;
}
}
}Imports System.Text.Json
Imports System.Text.Json.Serialization
Imports RestSharp
Imports IronPdf
Namespace rest_sharp_demo
Class Program
Shared Sub Main()
' Create a RestClient
Dim baseUrl = "https://jsonplaceholder.typicode.com/users"
Dim options As New RestClientOptions(baseUrl) With {.UseDefaultCredentials = True}
Dim client As New RestClient(options)
' Create a RestRequest for the GET method
Dim request As New RestRequest()
' Execute the request and get the response
Dim response = client.Get(request)
' Check if the request was successful
If response.IsSuccessful Then
' Deserialize JSON response into a list of User objects
Dim users = JsonSerializer.Deserialize(Of List(Of User))(response.Content)
' Generate PDF
Dim html = GetHtml(users)
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("UsersReport.pdf")
Else
' Handle the error
Console.WriteLine($"Error: {response.ErrorMessage}")
End If
End Sub
' Method to generate HTML from user data
Private Shared Function GetHtml(users As List(Of User)) As String
Dim header As String = "
<html>
<head><title>Users List</title></head>
<body>
"
Dim footer As String = "
</body>
</html>"
Dim htmlContent As String = header
For Each user In users
htmlContent += $"
<h1>{user.Name}</h1>
<p>Username: {user.Username}</p>
<p>Email: {user.Email}</p>
<p>Company: {user.Company}</p>
<p>Phone: {user.Phone}</p>
<p>Website: {user.Website}</p>
<p>Suite: {user.Address.Suite}</p>
<p>Street: {user.Address.Street}</p>
<p>City: {user.Address.City}</p>
<p>Zipcode: {user.Address.Zipcode}</p>
"
Next
htmlContent += footer
Return htmlContent
End Function
End Class
End NamespaceTüm kod, Git bu bağlantıda bulunabilir.
Burada, raporlar için gerekli tüm formatlamaya sahip kullanıcı listesi üzerinden bir HTML string'i oluşturuyoruz. Ardından, IronPDF kullanarak bir PDF belgesi üretiyoruz. HTML metnini bir PDF belgesine dönüştürmek için RenderHtmlAsPdf metodunu kullanıyoruz. Oluşturulan belge aşağıdaki gibidir:

Belge, geçerli bir lisans kullanılarak kaldırılabilen bir deneme lisans filigranı içerir.
Lisanslama (Ücretsiz Deneme Mevcuttur)
Yukarıdaki kodun çalışması için bir lisans anahtarı gereklidir. Bu anahtarın appsettings.json içinde aşağıdaki gibi yerleştirilmesi gerekir:
{
"IronPdf.LicenseKey": "your license key"
}
Geliştiricilere kayıt olduktan sonra bir deneme lisansı sunulmaktadır ve deneme lisansı için bir kredi kartı gerekmemektedir. Bir kişi, e-posta kimliğini sağlayıp ücretsiz bir deneme için kaydolabilir.
Sonuç
RestSharp kütüphanesi, C#'ta RESTful API'lerle çalışmayı basitleştirir, temiz ve etkili bir şekilde HTTP istekleri oluşturma ve yanıtları ele alma sağlar. İster GET istekleriyle veri alıyor olun, ister POST istekleriyle veri gönderiyor olun, RestSharp'ın sezgisel API'si ve kullanışlı özellikleri, web servisleriyle etkileşimde bulunan uygulamalar geliştiren geliştiriciler için değerli bir araç kılar.
IronPDF, PDF oluşturma için esnek ve kullanımı kolay bir çözüm sunar. Çeşitli IronPDF özellikleri hakkında daha fazla bilgi için lütfen IronPDF dokümantasyon sayfasını ziyaret edin.
IronPDF'in süresiz lisansları kodlama becerilerinizi geliştirip modern uygulama gereksinimlerini karşılamanıza yardımcı olacaktır.
Hem RestSharp hem de IronPDF bilmek, büyük yetenekler kazandırarak geliştiricilere modern uygulamalar oluşturma imkanı tanır.

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ve NASA, Tesla ve dünya genelindeki devlet kurumlarına hizmet etmektedir.
İlgili Makaleler


