
RestSharp C# (jak to działa dla programistów)
RestSharp to popularna open-source biblioteka .NET do wykonywania żądań HTTP w C#. Upraszcza proces pracy z API RESTful, zapewniając prosty i elastyczny sposób komunikacji z usługami webowymi. W tym artykułe omówimy kluczowe funkcje RestSharp i IronPDF oraz pokażemy, jak można wyodrębnić dane i wygenerować plik PDF.
Dlaczego RestSharp?
W nowoczesnych aplikacjach wielowarstwowych różne usługi muszą bardzo często komunikować się ze sobą, a RestSharp oferuje prosty i wydajny sposób, hermetyzując wszystkie złożone procesy. To znacznie upraszcza proces tworzenia oprogramowania.
Zainstaluj RestSharp
RestSharp jest dostępny jako pakiet NuGet i można go zainstalować w projekcie C#. Można to zrobić za pomocą konsoli NuGet Package Manager Console lub interfejsu użytkownika Visual Studio NuGet Package Manager.
Wysyłanie prostych żądań GET
Zacznijmy od prostego przykładu wysłania żądania GET do interfejsu API RESTful przy użyciu RestSharp. Załóżmy, że chcemy pobrać informacje z publicznego interfejsu API ASP.NET Core, który zwraca dane użytkownika:
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 obsługuje również żądania i odpowiedzi asynchroniczne przy użyciu metod API async.
Obsługa danych odpowiedzi
RestSharp zapewnia wygodne metody deseryalizacji treści odpowiedzi do obiektów C#. Rozszerzmy nasz przykład, aby zdeserializować dane odpowiedzi JSON do listy obiektów użytkownika:
// 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 userW tym przykladzie zdefiniowalismy klase User z wlasciwosciami odpowiadajacymi polom JSON. Uzylismy JsonSerializer.Deserialize z przestrzeni nazw System.Text.Json.
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 ClassWynik
Wszystkie identyfikatory użytkowników i nazwy są wyświetlane w wynikach.

Cały kod jest dostępny w serwisie Git pod tym linkiem.
Typ treści
RestSharp obsługuje wysyłanie żądań z treścią w formacie XML lub JSON. Metody AddJsonBody lub AddXmlBody instancji RestRequest moga byc uzywane do dodawania ciala JSON lub XML. RestSharp automatycznie ustawi typ zawartości. Obsługuje automatycznie odpowiedzi JSON lub XML.
// 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)Wysyłanie danych za pomocą żądań POST
RestSharp obsługuje również wysyłanie danych w treści żądania, co jest powszechne podczas tworzenia lub aktualizowania zasobów. Zmodyfikujmy nasz przykład, aby zademonstrować API żądania POST:
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 NamespaceW tym przykladzie tworzymy nowy obiekt User, serializujemy go do JSON i dolaczamy do ciala zadania uzywajac metody AddJsonBody. Serwer odbiera dane JSON i odpowiednio przetwarza żądanie.
Wynik

Uwierzytelnianie
RestSharp obsługuje również wysyłanie żądań z uwierzytelnianiem. RestClientOptions moze zawierac parametry uwierzytelniania.
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)}W tym przypadku stosujemy podstawowe uwierzytelnianie za pomocą tajnego identyfikatora klienta, który jest wysyłany w każdym żądaniu.
Obsługa błędów
RestSharp może obsługiwać błędy występujące podczas żądań URL, takie jak błędy przekroczenia limitu czasu, uwierzytelniania lub autoryzacji. RestSharp nie zgłasza wyjątku, jeśli żądanie zakończy się niepowodzeniem. Należy go skonfigurować ręcznie.
Można zastosować następujące konfiguracje obsługi błędów:
- FailOnDeserializationError: Ustawienie tej wlasciwosci na true powie RestSharp, aby traktowal nieudana deserializacje jako blad i ustawil
ResponseStatusnaErrorzgodnie z tym. - ThrowOnDeserializationError: Ustawienie tej właściwości na true spowoduje, że RestSharp zgłosi błąd w przypadku niepowodzenia deseryalizacji.
- ThrowOnAnyError: Wywołuje wyjątek, jeśli wystąpią jakiekolwiek błędy podczas wysyłania żądania lub podczas deseryalizacji.
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)Przedstawiamy IronPDF
IronPDF to biblioteka PDF w języku C# firmy Iron Software, która pomaga odczytywać i generować dokumenty PDF. Może łatwo konwertować sformatowane dokumenty z informacjami o stylu do PDF. IronPDF może z łatwością generować pliki PDF na podstawie treści HTML; może pobrać kod HTML z adresu URL, a następnie wygenerować pliki PDF.
Kluczową funkcją IronPDF jest konwersja HTML do PDF z zachowaniem wszystkich układów i stylów. Przekształca treści internetowe w pliki PDF, dzięki czemu idealnie nadaje się do raportów, faktur i dokumentacji. Pliki HTML, adresy URL i ciągi znaków HTML można łatwo konwertować do formatu PDF.
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 ClassZainstaluj bibliotekę IronPDF
Aby zintegrować IronPDF z projektem Selenium RestSharp za pomocą menedżera pakietów NuGet, wykonaj następujące kroki:
- Otwórz program Visual Studio i w oknie Solution Explorer kliknij prawym przyciskiem myszy swój projekt.
- Wybierz "Zarządzaj pakietami NuGet..." z menu kontekstowego.
- Przejdź na kartę Przeglądaj i wyszukaj IronPDF.
- Wybierz bibliotekę IronPDF z wyników wyszukiwania i kliknij przycisk instalacji.
- Zaakceptuj wszelkie monity dotyczące Umowy licencyjnej.
Jeśli chcesz dołączyć IronPDF do swojego projektu za pomocą konsoli menedżera pakietów, wykonaj następujące polecenie w konsoli menedżera pakietów:
Pobierze i zainstaluje IronPDF w Twoim projekcie.
Instalacja za pomocą NuGet Strona internetowa
Aby uzyskać szczegółowy przegląd IronPDF, w tym jego funkcje, zgodność i dodatkowe opcje pobierania, odwiedź stronę IronPDF na stronie NuGet pod adresem https://www.nuget.org/packages/IronPdf.
Instalacja za pomocą biblioteki DLL
Alternatywnie można włączyć IronPDF bezpośrednio do swojego projektu, korzystając z pliku DLL. Pobierz plik ZIP zawierający bibliotekę DLL z sekcji Pobieranie IronPDF. Rozpakuj plik i dołącz bibliotekę DLL do swojego projektu.
Teraz pobierzemy wszystkich użytkowników i wygenerujemy raport PDF przy użyciu ciągu HTML oraz generatora IronPDF.
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 NamespaceCały kod można znaleźć w serwisie Git pod tym linkiem.
W tym miejscu najpierw generujemy ciąg HTML z listy użytkowników, zawierający całe formatowanie wymagane dla raportów. Następnie używamy IronPDF do wygenerowania dokumentu PDF. Uzywamy metody RenderHtmlAsPdf do konwersji lancucha HTML na dokument PDF. Wygenerowany dokument wygląda następująco:

Dokument zawiera niewielki znak wodny dotyczący licencji Trial, który można usunąć za pomocą ważnej licencji.
Licencjonowanie (dostępna bezpłatna wersja próbna)
Aby powyższy kod działał, wymagany jest klucz licencyjny. Ten klucz nalezy umiescic w appsettings.json nastepujaco:
{
"IronPdf.LicenseKey": "your license key"
}
Po rejestracji programiści mogą uzyskać Licencję Trial, która nie wymaga podania danych karty kredytowej. Można podać swój adres e-mail i zarejestrować się, aby skorzystać z bezpłatnej wersji próbnej.
Wnioski
Biblioteka RestSharp upraszcza proces pracy z interfejsami API RESTful w języku C#, zapewniając przejrzysty i wydajny sposób wysyłania żądań HTTP oraz obsługi odpowiedzi. Niezależnie od tego, czy pobierasz dane za pomocą żądań GET, czy wysyłasz dane za pomocą żądań POST, intuicyjny interfejs API i wygodne funkcje RestSharp sprawiają, że jest to cenne narzędzie dla programistów tworzących aplikacje współpracujące z usługami internetowymi.
IronPDF zapewnia elastyczne i łatwe w użyciu rozwiązanie do generowania plików PDF. Aby uzyskać dodatkowe informacje na temat różnych funkcji IronPDF, odwiedź stronę dokumentacji IronPDF.
Licencje wieczyste IronPDF pomogą Ci poprawić umiejętności kodowania i spełnić wymagania nowoczesnych aplikacji.
Znajomość zarówno RestSharp, jak i IronPDF stanowi ogromny atut, umożliwiający programistom tworzenie nowoczesnych aplikacji.

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczącą ponad 50 osób, obsługującą NASA, Teslę i światowe agencje rządowe.
Powiązane artykuły


