İçerikler

    Sunucu yanıtı 405 Method Not Allowed

    HTTP 405 Durum Kodu Nedir?

    HTTP 405 (Method Not Allowed) durum kodu, istemcinin kullandığı istek metodunun, istenen kaynak için desteklenmediğini gösterir. Bu durum, geliştiricilerin karşılaşabileceği hatalar ve yanlış anlamalar yaratabilir. Özellikle, doğru istek metodunu kullanmadıklarında, hata mesajlarıyla başa çıkmakta zorlanabilirler.

    405 - Method Not Allowed

    405 Hatasının Ortaya Çıkabileceği Senaryolar

    • İstemcinin GET yerine POST metodunu kullanması
    • Sadece PUT destekleyen bir kaynağa erişim sağlanması
    • Yanlış URL ve istek metodu kombinasyonu

    Pratik Örnekler

    1. POST Metodunun Kullanılması

    Bir web uygulaması, belirli bir URL'ye yalnızca GET istekleriyle erişimi destekliyorsa, istemci bir POST isteği gönderdiğinde 405 hatası alacaktır.

    2. Sadece PUT Desteği Olan Kaynaklar

    Bir API yalnızca veri güncelleme işlemleri için PUT metodunu destekliyorsa, GET veya DELETE gibi farklı bir metod kullanıldığında 405 hatası ile karşılaşılır.

    3. Yanlış URL ve İstek Metodu

    Eğer istemci, yanlış bir URL ile birlikte hatalı bir istek metodu kullanırsa, bu da 405 hatasına yol açabilir.

    405 Hatasının Farklı Programlama Dilleri ile Çözümü

    PHP

    
    if ($_SERVER['REQUEST_METHOD'] !== 'GET') {
        http_response_code(405);
        echo "Method Not Allowed";
    }
    

    Laravel gibi çerçevelerde, istek metodunu işlemek için route tanımlamalarında middleware kullanarak bu hatayı yönetebilirsiniz.

    JavaScript (Node.js)

    
    const express = require('express');
    const app = express();
    app.post('/api/resource', (req, res) => {
        res.status(405).send('Method Not Allowed');
    });
    

    Express ile metodları işlemek ve doğru durum kodlarını döndürmek için route yapılandırmalarını kullanabilirsiniz.

    Python (Flask)

    
    from flask import Flask, request, jsonify
    app = Flask(__name__)
    
    @app.route('/api/resource', methods=['PUT'])
    def resource():
        return jsonify(message="Resource updated"), 200
    
    @app.route('/api/resource', methods=['GET', 'POST'])
    def resource_error():
        return "Method Not Allowed", 405
    

    Dekoratörler kullanarak yalnızca belirli metodları kabul eden rotalar oluşturabilirsiniz.

    Sık Karşılaşılan Hatalar ve Önleme Yöntemleri

    • Yanlış sunucu yapılandırması
    • Uygulama yönlendirmelerinde hatalar
    • API metodlarının doğruluğunu test etme önerileri

    405 Durum Kodunu Yönetme Önerileri

    • Kullanıcıları yanlış metodlar hakkında bilgilendirmek
    • Geliştiriciler için API belgelerinin önemi
    • Hata 405'lerin izlenmesi için loglama ayarlarının yapılandırılması
    İstek Metodu Desteklenen Metotlar Hata Kodu
    GET GET 405
    POST PUT 405
    DELETE PUT 405

    Ek Kodlar

    KodAçıklama
    405.0Yönteme izin verilmedi - Kullanılan istek yöntemine izin verilmiyor.