C# ile HTTP Request Methodları ve Örnekleri

HTTP istek methodları, bir HTTP isteğinde belirli bir eylemi gerçekleştirmek için kullanılan komutlardır. İşte en yaygın kullanılan HTTP istek methodlarından bazıları ve C# örnekleri:

1) GET

Belirtilen URI'deki bir kaynağın okunmasını istemek için kullanılır. Bu method, sunucudan veri almak için kullanılır.

using System;
using System.Net.Http;

class Program
{
    static async void Main()
    {
        HttpClient client = new HttpClient();

        HttpResponseMessage response = await client.GetAsync("https://www.example.com");
        
        string content = await response.Content.ReadAsStringAsync();
        
        Console.WriteLine(content);
    }
}

2) POST

Belirtilen URI'ye yeni bir kaynak eklemek veya mevcut bir kaynağı güncellemek için kullanılır. Bu method, sunucuya veri göndermek için kullanılır.

using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        HttpClient client = new HttpClient();

        string url = "https://www.example.com/api/resource";

        string jsonPayload = "{\"name\":\"John\", \"age\":30}";

        HttpContent content = new StringContent(jsonPayload, Encoding.UTF8, "application/json");

        HttpResponseMessage response = await client.PostAsync(url, content);

        string result = await response.Content.ReadAsStringAsync();

        Console.WriteLine(result);
    }
}

3) PUT

Belirtilen URI'deki bir kaynağın tamamen değiştirilmesini istemek için kullanılır. Bu method, mevcut bir kaynağı güncellemek için kullanılır.

using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        HttpClient client = new HttpClient();

        string url = "https://www.example.com/api/resource/123";

        string jsonPayload = "{\"name\":\"John\", \"age\":35}";

        HttpContent content = new StringContent(jsonPayload, Encoding.UTF8, "application/json");

        HttpResponseMessage response = await client.PutAsync(url, content);

        string result = await response.Content.ReadAsStringAsync();

        Console.WriteLine(result);
    }
}

4) PATCH

PATCH, bir kaynağın kısmi olarak güncellenmesini sağlayan bir HTTP istek methodudur. Bu method, bir kaynağın sadece belirli alanlarını güncellemek için kullanılır. İşte bir örnek:

 
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        HttpClient client = new HttpClient();

        string url = "https://www.example.com/api/resource/123";

        string jsonPayload = "{\"name\":\"John Doe\"}";

        HttpContent content = new StringContent(jsonPayload, Encoding.UTF8, "application/json");

        HttpRequestMessage request = new HttpRequestMessage(new HttpMethod("PATCH"), url);
        request.Content = content;

        HttpResponseMessage response = await client.SendAsync(request);

        if (response.IsSuccessStatusCode)
        {
            Console.WriteLine("Kaynak başarıyla güncellendi.");
        }
        else
        {
            Console.WriteLine("Bir hata oluştu: " + response.StatusCode);
        }
    }
}

Bu örnekte, HttpRequestMessage sınıfı kullanılarak bir PATCH isteği oluşturulur. İstek içeriği, belirli alanların güncellenmesini sağlayacak JSON verisiyle doldurulur. SendAsync metodu ile istek gönderilir ve yanıt değerlendirilir.

Lütfen unutmayın ki PATCH methodu, HTTP/1.1 standartlarına göre zorunlu değildir ve tüm sunucular tarafından desteklenmeyebilir. Bu nedenle, kullanacağınız API veya sunucunun PATCH isteklerini destekleyip desteklemediğini doğrulamak önemlidir.

5) OPTIONS

OPTIONS, bir sunucudaki kaynağın hangi HTTP istek methodlarını desteklediğini öğrenmek için kullanılan bir HTTP istek methodudur. İsteği gönderen istemci, sunucunun hangi methodları desteklediğini ve hangi ek özellikleri sağladığını belirlemek için OPTIONS isteğini kullanabilir. İşte bir örnek:
using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        HttpClient client = new HttpClient();

        string url = "https://www.example.com/api/resource";

        HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Options, url);

        HttpResponseMessage response = await client.SendAsync(request);

        if (response.IsSuccessStatusCode)
        {
            string allowedMethods = response.Headers.GetValues("Allow").FirstOrDefault();
            Console.WriteLine("Desteklenen HTTP Methodları: " + allowedMethods);

            // Ek sunucu yanıt başlıklarını işleyebilirsiniz.
            // Örnek olarak:
            // string additionalHeaders = response.Headers.GetValues("Access-Control-Allow-Headers").FirstOrDefault();
            // Console.WriteLine("Ek başlıklar: " + additionalHeaders);
        }
        else
        {
            Console.WriteLine("Bir hata oluştu: " + response.StatusCode);
        }
    }
}

Bu örnekte, HttpRequestMessage sınıfı kullanılarak bir OPTIONS isteği oluşturulur. SendAsync metodu ile istek gönderilir ve yanıt değerlendirilir. Allow başlığından desteklenen HTTP methodlarını alabilirsiniz. Ayrıca, sunucunun ek başlıklar sağlaması durumunda, ilgili başlıkları alabilirsiniz.

OPTIONS isteği, genellikle CORS (Cross-Origin Resource Sharing) kontrolleri sırasında kullanılır ve bir sunucunun hangi kaynaklara erişime izin verdiğini belirlemek için kullanılabilir.

Yorumlar kapalı