Saya memiliki layanan REST dan WCF dan ingin mengirim kode status khusus berdasarkan operasi.
Contoh ketika beberapa validasi gagal maka saya ingin mengirim HTTP 444 dan ketika otorisasi gagal saya ingin mengirim HTTP 455
Pertanyaannya adalah bagaimana kita memvalidasinya untuk layanan web SOAP dan REST.
Pada klien bagaimana kode kesalahan bertindak karena ketika Anda mengirim HTTP 400/500 dari Layanan WCF (menggunakan SOAP) pengecualian dilemparkan pada klien yang menunjukkan kode status.
Sekarang jika saya mengirim kode status kustom baru, bagaimana cara klien menangani ini?
Jawaban:
Ya, selama Anda menghormati kelasnya - yaitu, 2xx untuk sukses, 4xx untuk kesalahan Klien, dll. Jadi, Anda dapat mengembalikan kode kesalahan 4XX khusus (lebih disukai yang belum ditetapkan) untuk kondisi kesalahan aplikasi Anda sendiri.
Mengutip dari [RFC 2616] [1]:
Kelas'
http://tools.ietf.org/html/rfc2616#section-6.1.1
sumber
Saya menyarankan agar Anda tidak membuat kode status HTTP Anda sendiri, ketika kode yang berlaku sudah ada untuk hal-hal yang ingin Anda lakukan dalam contoh Anda.
Dari https://tools.ietf.org/html/rfc4918#section-11.2 :
Dapat dikatakan bahwa "tidak dapat memproses" bisa jadi karena kesalahan validasi.
sumber
Ya, Anda dapat menambahkan kode kesalahan khusus. Jika memungkinkan, gunakan kode yang sudah ada, dan jika Anda mendeklarasikan yang baru, berhati-hatilah untuk menghindari benturan.
Anda harus sadar bahwa beberapa proxy memfilter kode yang tidak dikenal . Saya memiliki masalah dengan pengguna di mana di belakang proxy yang memetakan 5XX menjadi 500, dan 4XX ke 404. Ini membuat panggilan ajax saya di mana memeriksa kode status gagal.
sumber
Beberapa aplikasi menambahkan kode respons kustomnya di kisaran 600-799. Periksa misalnya daftar kode respons dari KeyNote di sini
Kode Kesalahan yang Ditentukan Keynote (600-799)
600: CONNECTION ERROR - This indicates a general connection error 601: INCOMPLETE ERROR - This indicates sever sends an incomplete page/object (as indicated by Content-Length header) 602: UNEXPECTED CLOSE ERROR - This indicates socket connection has been closed unexpectedly 603: REFUSED ERROR - This indicates a request to connect to the server is refused 604: TIMEOUT ERROR - This indicates there is no activity in socket connection in 3 minutes 605: REDIRECT ERROR - This indicates an error in redirect HTTP header 606: SSL ERROR - This indicates a general error in SSL 607: HEADER ERROR - This indicates a malformed HTTP header 608: EMPTY RESPONSE ERROR - This indicates server doesn't send any response after a request is sent 609: UNKNOWN HOST ERROR - This indicates socket receives an unknown host error from DNS 610: NO ROUTE TO HOST ERROR - This indicates a no route to host error was received while attempting to open a socket 611: SOCKET ERROR - This indicates a general socket error 612: FRAME LOOP ERROR - This indicates a page has a frame loop (frame A includes Frame B that includes Frame A) 613: REDIRECT LOOP ERROR - This indicates a page has a redirect loop (page A redirects to page B that redirects to page A) 614: CONNECTION RESET ERROR - This indicates socket receive a reset signal from the server 615: SOCKET PROTOCOL ERROR - This indicates an error in socket protocol 616: SOCKET BIND ERROR - This indicates an error in binding the socket 617: CONNECTION ERROR - This indicates a general socket connection error 618: CHUNK ERROR - This indicates an error in chunked encoding 619: SSL TIMEOUT - This indicates a timeout during SSL handshake (2 minutes) 620: SSL END OF INPUT - This indicates an end-of-file is received during SSL handshake 621: SSL HANDSHAKE ERROR - This indicates a general error during SSL handshake 622: SSL CERTIFICATE ERROR - This indicates an error in SSL certificate verification 623: SSL AUTHENTICATION ERROR - This indicates an authentication error during SSL handshake 624: SSL BAD MAC ERROR - This indicates a bad MAC during SSL handshake 625: SSL CIPHER ERROR - This indicates a cipher error during SSL handshake 701: ERROR TEXT FOUND - This code is returned if any error text (such as, "Service Unavailable") are found in the main page (frame HTML contents included). Note that the error text must be defined in advance of the test. Error text means if the text is found, this session should be considered a failure. 702: REQUIRED TEXT NOT FOUND - This code is returned If not all required texts are found in the main page. Note that required text must be defined in advance of the test. Required text means if the text is not found, this session should be considered a failure. 703: HTML BODY EMPTY - This code is returned if the HTML body of the page is empty (only if error text or required text has been defined).
Apakah ini praktik yang baik, saya tidak akan berani mengatakannya, tetapi setidaknya ini adalah referensi yang menarik.
sumber
Berikut daftar lengkap semua kode yang tersedia / tidak tersedia
HTTP
.https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
Misalnya, panah berikut tersedia untuk digunakan (karena belum ditetapkan) pada
4XX
keluarga.Saya harap ini membantu seseorang.
Terima kasih
sumber
Tidak, Anda hanya dapat menggunakan kode persyaratan dokumentasi rfc, lihat detailnya di RFC1945
sumber