Anda mencoba menggantung gambar di dinding. Anda punya obeng, tapi yang benar-benar Anda butuhkan adalah palu. Sekeras apa pun Anda mencoba, obeng itu tidak akan bisa menancapkan paku ke dinding. Alat yang Anda gunakan tidak sesuai dengan tugas yang ingin Anda selesaikan.
Inilah situasi persis yang diabadikan oleh salah satu kode kesalahan HTTP yang paling spesifik dan membantu: 405 Method Not Allowed.
Tidak seperti `404 Not Found` yang lebih umum (yang berarti "Saya tidak dapat menemukan apa yang Anda cari") atau `400 Bad Request` (yang berarti "Saya tidak mengerti apa yang Anda katakan"), kesalahan `405` sangatlah tepat. Ini berarti: "Saya menemukan sumber daya yang Anda cari, tetapi Anda menggunakan metode HTTP yang salah untuk berinteraksi dengannya."
Ini adalah cara server memberi tahu Anda, "Saya tahu apa itu /api/users, tetapi Anda tidak bisa MENGHAPUSnya. Coba gunakan GET saja."
Jika Anda seorang pengembang yang bekerja dengan API RESTful, memahami kode status `405` sangat penting untuk membangun dan menggunakan API dengan benar.
Dalam postingan blog terperinci ini, kita akan menjelajahi semua yang perlu Anda ketahui tentang status 405 Method Not Allowed, mulai dari artinya, mengapa itu terjadi, skenario umum, cara memperbaikinya, dan praktik terbaik untuk menanganinya dengan baik.
Sekarang, mari kita jelajahi tujuan, mekanisme, dan implikasi praktis dari kode status HTTP 405 Method Not Allowed.
Masalah: Metode HTTP dan Desain RESTful
Untuk memahami 405, kita perlu dengan cepat meninjau kembali cara kerja API RESTful. Dalam desain RESTful, URL yang sama dapat berperilaku berbeda tergantung pada metode HTTP (kata kerja) yang Anda gunakan:
GET /api/users- Mengambil daftar penggunaPOST /api/users- Membuat pengguna baruPUT /api/users/123- Memperbarui pengguna 123 (penggantian penuh)PATCH /api/users/123- Memperbarui sebagian pengguna 123DELETE /api/users/123- Menghapus pengguna 123
Kesalahan 405 terjadi ketika Anda mencoba menggunakan metode yang belum diimplementasikan server untuk titik akhir spesifik tersebut. Misalnya, mencoba POST ke /api/users/123 (yang biasanya hanya mendukung GET, PUT, PATCH, DELETE) kemungkinan akan mengembalikan 405.
Apa Sebenarnya Arti HTTP 405 Method Not Allowed?
Kode status 405 Method Not Allowed menunjukkan bahwa server mengetahui sumber daya target (URL yang Anda minta) ada, tetapi tidak mendukung metode HTTP yang digunakan dalam permintaan.
Ada satu persyaratan penting untuk respons 405 yang tepat: ia harus menyertakan header Allow yang mencantumkan metode HTTP yang didukung untuk sumber daya yang diminta.
Respons 405 yang tepat terlihat seperti ini:
HTTP/1.1 405 Method Not AllowedAllow: GET, HEAD, OPTIONSContent-Type: application/json
{
"error": "Method Not Allowed",
"message": "POST method is not supported for this endpoint."
}
Mari kita uraikan komponen kuncinya:
Allow: GET, HEAD, OPTIONS: Ini adalah bagian terpenting. Header ini memberi tahu klien metode mana saja yang diizinkan. Ini seperti server yang mengatakan, "Anda tidak bisa menggunakan palu di sini, tetapi Anda bisa menggunakan tiga alat ini sebagai gantinya."
Secara sederhana, klien mengirimkan metode HTTP yang valid seperti GET, POST, PUT, DELETE, dll., tetapi server tidak mengizinkan metode tertentu tersebut pada URL atau titik akhir yang diminta.
Mengapa Kesalahan 405 Terjadi?
Kesalahan 405 terjadi ketika metode yang digunakan dalam permintaan HTTP tidak diizinkan untuk sumber daya tersebut. Alasan umum meliputi:
- Memanggil GET pada titik akhir yang hanya mendukung POST.
- Menggunakan PUT di mana hanya DELETE yang didukung.
- Mengirim permintaan OPTIONS ke sumber daya yang tidak mengizinkannya.
- Konfigurasi perutean server atau penangan metode HTTP yang salah.
- Penggunaan API REST yang salah atau dokumentasi yang kedaluwarsa.
Memahami akar penyebab membantu memperbaiki masalah secara efisien.
Mengapa Server Mengembalikan 405 Alih-alih 404
Anda mungkin bertanya-tanya mengapa tidak mengembalikan 404 Not Found saja?
Nah, 404 berarti sumber daya sama sekali tidak ditemukan, tetapi 405 berarti sumber daya ada, hanya saja tidak dengan metode itu.
Perbedaan ini penting bagi pengembang karena memberi tahu Anda:
- Anda berada di tempat yang tepat.
- Anda hanya menggunakan alat yang salah.
Cara Kerjanya: Contoh Konkret
Mari kita bayangkan titik akhir API hanya-baca yang menyediakan informasi produk.
Permintaan yang Valid:
GET /api/products/123 HTTP/1.1Host: api.example.com
Respons Server: 200 OK dengan data produk.
Permintaan yang Tidak Valid:
Klien secara keliru mencoba memperbarui produk menggunakan PUT:
PUT /api/products/123 HTTP/1.1Host: api.example.comContent-Type: application/json
{"name": "New Product Name"}
Respons 405 dari Server:
HTTP/1.1 405 Method Not AllowedAllow: GET, HEADContent-Type: application/json
{
"error": "Method Not Allowed",
"message": "The PUT method is not supported for this resource."
}
Header Allow: GET, HEAD dengan jelas memberi tahu klien bahwa ini adalah titik akhir hanya-baca. Klien sekarang tahu persis apa yang salah dan bagaimana memperbaikinya.
Mengapa Header Allow Sangat Penting
Header Allow mengubah 405 dari kesalahan yang membuat frustrasi menjadi percakapan yang membantu. Tanpa itu, klien akan dibiarkan menebak-nebak:
- Dengan header
Allow: "Saya tidak bisa PUT di sini, tapi saya bisa GET atau menggunakan HEAD." - Tanpa header
Allow: "Saya tidak bisa PUT di sini. ¯_(ツ)_/¯ Semoga berhasil mencari tahu apa yang bisa Anda lakukan!"
Inilah sebabnya mengapa spesifikasi HTTP mewajibkan server untuk menyertakan header Allow dalam respons 405. Inilah yang membuat kode tersebut benar-benar berguna daripada hanya membuat frustrasi.
Seperti Apa Respons 405?
Server merespons dengan status 405 beserta header Allow yang menunjukkan metode HTTP yang diizinkan. RFC 7231 (spesifikasi HTTP/1.1) menginstruksikan bahwa ketika kode status 405 dikirim, server HARUS menyertakan header Allow yang mencantumkan metode HTTP yang diizinkan untuk sumber daya tersebut.
Contoh respons:
textHTTP/1.1 405 Method Not Allowed Allow: GET, HEAD, OPTIONS Content-Type: text/html
<html> <body> <h1>405 Method Not Allowed</h1> <p>The requested method POST is not supported for this resource.</p> </body> </html>Header Allow adalah kunci karena memberi tahu klien metode mana yang dapat diterima, memungkinkan koreksi.
Dengan cara ini, klien tahu metode mana yang didukung dan dapat menyesuaikan permintaan mereka.
Skenario Umum yang Memicu Kesalahan 405
1. Titik Akhir Hanya-Baca
Seperti dalam contoh kita di atas, beberapa sumber daya sengaja hanya-baca. Anda dapat mengambilnya dengan GET, tetapi Anda tidak dapat memodifikasinya dengan PUT, PATCH, atau DELETE.
2. Metode yang Salah untuk Tindakan
Ini mungkin penyebab paling umum. Pengembang salah mencampuradukkan metode mana yang akan digunakan untuk tindakan mana.
- Menggunakan
GETuntuk membuat sumber daya (seharusnyaPOST) - Menggunakan
POSTuntuk memperbarui sumber daya (seharusnyaPUTatauPATCH) - Menggunakan
DELETEpada URL koleksi seperti/api/users(seharusnya pada sumber daya spesifik seperti/api/users/123)
3. Implementasi Metode yang Hilang
Perancang API mungkin belum mengimplementasikan metode tertentu untuk suatu titik akhir. Misalnya, titik akhir mungkin mendukung GET dan POST tetapi tidak PUT atau DELETE.
4. Firewall Aplikasi Web (WAF) dan Aturan Keamanan
Terkadang, konfigurasi keamanan sengaja memblokir metode tertentu. Misalnya, WAF mungkin memblokir metode PUT, PATCH, dan DELETE pada jalur tertentu karena alasan keamanan, mengembalikan 405.
405 vs. Kesalahan 4xx Lainnya: Mengetahui Perbedaannya
Penting untuk membedakan 405 dari kode kesalahan klien lainnya.
405 Method Not Allowedvs.404 Not Found:
405 berarti "URL ini ada, tetapi tidak untuk metode itu."
404 berarti "URL ini tidak ada untuk metode apa pun."
405 Method Not Allowedvs.501 Not Implemented:
405 berarti "Saya tahu apa yang ingin Anda lakukan, tetapi saya tidak akan membiarkan Anda melakukannya untuk sumber daya spesifik ini." (Kesalahan klien)
501 berarti "Saya sama sekali tidak tahu cara menangani metode HTTP ini, untuk sumber daya apa pun." (Kesalahan server)
405 Method Not Allowedvs.403 Forbidden:
405 berarti "Operasi ini tidak tersedia untuk siapa pun." (Pembatasan metode)
403 berarti "Operasi ini tersedia, tetapi tidak untuk Anda dengan izin Anda saat ini." (Pembatasan otorisasi)
Skenario Umum di Mana 405 Muncul
- API RESTful: Mencoba PUT ke titik akhir yang hanya mendukung GET atau POST.
- Formulir web: Mengirimkan formulir dengan metode GET ke titik akhir yang mengharapkan POST.
- Rute yang salah dikonfigurasi: Rute server tidak menangani metode tertentu dengan benar.
- Masalah middleware: Perangkat lunak keamanan memblokir atau memfilter metode tertentu.
- Sumber daya statis: Meminta POST pada gambar atau URL file statis.
Bagaimana Klien Harus Menangani 405 Method Not Allowed
Ketika klien menerima respons 405, mereka harus:
- Memeriksa header
Allowuntuk mengidentifikasi metode HTTP yang didukung. - Memodifikasi permintaan untuk menggunakan metode yang diizinkan.
- Mencoba kembali permintaan sesuai.
- Menangani kesalahan dengan baik di antarmuka pengguna atau alur kerja.
- Memberi tahu pengguna tentang tindakan yang tidak didukung dengan jelas.
Bagaimana Pengembang Dapat Memperbaiki Kesalahan 405
- Tinjau perutean dan konfigurasi server: Pastikan rute menangani semua metode HTTP yang diharapkan.
- Periksa dokumentasi API: Verifikasi penggunaan metode HTTP yang benar.
- Implementasikan penangan metode: Definisikan penangan untuk semua metode yang diizinkan secara eksplisit.
- Respons dengan header
Allowyang tepat: Tingkatkan kegunaan klien. - Validasi permintaan klien: Tangkap penggunaan metode yang salah sejak dini di aplikasi klien Anda.
- Catat kesalahan 405: Untuk memantau dan memperbaiki masalah yang berulang.
Contoh Metode HTTP dan Penggunaan yang Diizinkan
| Metode HTTP | Kasus Penggunaan Umum |
|---|---|
| GET | Mengambil sumber daya atau data |
| POST | Membuat sumber daya atau melakukan tindakan |
| PUT | Memperbarui atau mengganti sumber daya |
| DELETE | Menghapus sumber daya |
| PATCH | Memperbarui sebagian sumber daya |
| OPTIONS | Menanyakan tentang metode yang didukung |
Ketidaksesuaian antara metode dan kemampuan sumber daya memicu 405.
Menguji Respons 405 dengan Apidog

Menguji bahwa API Anda dengan benar mengembalikan 405 untuk metode yang tidak didukung adalah ciri khas pengembangan API yang kuat. Apidog membuat proses ini sangat mudah.
Dengan Apidog, Anda dapat:
- Menguji Semua Metode dengan Mudah: Ambil URL titik akhir mana pun dan dengan cepat beralih antara metode GET, POST, PUT, PATCH, DELETE dengan satu klik untuk melihat mana yang didukung.
- Memvalidasi Header Allow: Ketika Anda mendapatkan respons
405, Apidog akan dengan jelas menunjukkan headerAllowdi detail respons. Anda dapat memverifikasi bahwa itu berisi daftar metode yang benar. - Mengotomatiskan Pengujian Metode: Buat suite pengujian yang secara otomatis memverifikasi bahwa metode yang tidak didukung mengembalikan
405dengan headerAllowyang tepat, sementara metode yang didukung mengembalikan status2xxyang diharapkan. - Men-debug Kode Sisi Klien: Jika Anda membangun aplikasi klien yang menerima
405, Anda dapat menggunakan Apidog untuk mereplikasi permintaan dan respons yang tepat, membantu Anda memahami dan memperbaiki masalah dalam kode klien Anda. - Mendokumentasikan Perilaku API: Gunakan Apidog untuk mendokumentasikan metode mana yang didukung untuk setiap titik akhir, membuat informasi ini jelas bagi pengembang lain yang menggunakan API Anda.
Alih-alih menebak, Anda mendapatkan kejelasan dalam hitungan detik. Unduh Apidog secara gratis dan jadikan pemecahan masalah kesalahan HTTP menjadi mudah.
Praktik Terbaik untuk Menangani 405
Untuk Pengembang API (Sisi Server):
- Selalu sertakan header
Allowdalam respons405. Ini tidak opsional untuk server HTTP yang patuh. - Bersikaplah konsisten dalam penggunaan metode Anda di seluruh API Anda. Jika sebagian besar titik akhir koleksi mendukung GET dan POST, jangan memiliki satu yang hanya mendukung GET tanpa alasan yang baik.
- Sediakan pesan kesalahan yang membantu di badan respons, terutama untuk API yang digunakan oleh pengembang lain.
- Pertimbangkan untuk menggunakan OPTIONS: Implementasikan metode OPTIONS untuk titik akhir Anda, yang harus mengembalikan header
Allowyang sama. Ini memberi klien cara untuk menemukan metode yang didukung tanpa memicu kesalahan.
Untuk Konsumen API (Sisi Klien):
- Periksa header
Allowsaat Anda menerima405. Ini memberi tahu Anda persis apa yang bisa Anda lakukan sebagai gantinya. - Gunakan metode OPTIONS untuk menemukan metode yang didukung sebelum mencoba operasi lain.
- Tangani kesalahan
405dengan baik dalam kode Anda—jangan perlakukan sebagai kesalahan fatal, tetapi sebagai panduan tentang cara memperbaiki permintaan Anda.
Peran Metode OPTIONS
Metode OPTIONS adalah sepupu proaktif dari respons 405. Alih-alih mencoba operasi dan ditolak, klien dapat terlebih dahulu bertanya kepada server metode apa yang didukung:
Permintaan:
OPTIONS /api/products/123 HTTP/1.1Host: api.example.com
Respons:
HTTP/1.1 200 OKAllow: GET, HEAD, OPTIONS
Ini adalah cara yang jauh lebih elegan untuk menemukan kemampuan API tanpa memicu kesalahan.
Memecahkan Masalah Umum 405
- Periksa kembali definisi rute dan penangan kata kerja HTTP.
- Tinjau konfigurasi proxy atau firewall yang mungkin memblokir metode tertentu.
- Cari kesalahan ejaan atau ketidaksesuaian dalam permintaan klien.
- Gunakan alat debugging seperti Apidog untuk menangkap siklus permintaan/respons lengkap.
- Uji di seluruh lingkungan untuk menemukan masalah spesifik produksi.
Implikasi Keamanan dari 405
405 juga dapat memiliki implikasi keamanan:
- Menonaktifkan metode yang tidak aman (seperti
TRACE) membantu mencegah serangan. - Mengungkapkan terlalu banyak di Allow header mungkin memberi petunjuk kepada penyerang.
- Penanganan 405 yang konsisten menghindari kebocoran detail server.
Kesimpulan: Dari Frustrasi Menjadi Kejelasan
Kode status 405 Method Not Allowed bukanlah sekadar penghalang jalan acak. Ini adalah sinyal berharga bahwa sumber daya ada tetapi tidak menerima metode yang Anda gunakan. Kode status HTTP 405 Method Not Allowed adalah contoh sempurna bagaimana desain API yang baik memberikan umpan balik yang jelas dan dapat ditindaklanjuti. Ini mengubah apa yang bisa menjadi jalan buntu yang membingungkan menjadi rambu yang membantu yang mengatakan, "Anda tidak bisa melewati jalan ini, tetapi ini adalah jalur yang terbuka untuk Anda."
Bagi pengembang API, mengimplementasikan respons 405 yang tepat dengan header Allow yang akurat adalah tanda profesionalisme dan perhatian terhadap detail. Bagi konsumen API, memahami cara membaca dan menanggapi kesalahan 405 adalah kunci untuk membangun aplikasi yang kuat dan dapat memperbaiki diri.
Jadi, lain kali Anda menemukan kesalahan 405, jangan frustrasi, bacalah header Allow. Itu adalah server yang mencoba membantu Anda berhasil. Dan ketika Anda membangun atau menguji API sendiri, alat seperti Apidog akan memberi Anda kekuatan untuk memastikan penggunaan metode Anda benar dan penanganan kesalahan Anda sebaik yang seharusnya.
