Saya mengerjakan sebuah proyek dan setelah berdebat dengan orang-orang di tempat kerja selama lebih dari satu jam. Saya memutuskan untuk tahu apa yang dikatakan orang-orang di stack-exchange.
Kami sedang menulis API untuk suatu sistem, ada permintaan yang harus mengembalikan pohon Organisasi atau pohon Sasaran.
Pohon Organisasi adalah organisasi tempat pengguna berada, dengan kata lain, pohon ini harus selalu ada. Dalam organisasi, pohon tujuan harus selalu ada. (Di situlah argumen dimulai). Dalam kasus di mana pohon itu tidak ada, rekan kerja saya memutuskan bahwa akan benar untuk menjawab jawaban dengan kode status 200. Dan kemudian mulai meminta saya untuk memperbaiki kode saya karena aplikasi itu berantakan ketika tidak ada pohon.
Saya akan mencoba untuk menyimpan api dan amarah.
Saya menyarankan untuk meningkatkan kesalahan 404 ketika tidak ada pohon. Paling tidak saya akan tahu bahwa ada sesuatu yang salah. Saat menggunakan 200, saya harus menambahkan cek khusus untuk respons saya dalam panggilan balik sukses untuk menangani kesalahan. Saya berharap untuk menerima objek, tetapi saya mungkin benar-benar menerima respons kosong karena tidak ada yang ditemukan. Kedengarannya benar-benar adil untuk menandai respons sebagai 404. Dan kemudian perang dimulai dan saya mendapat pesan bahwa saya tidak mengerti skema kode status HTTP. Jadi saya di sini dan bertanya ada apa dengan 404 dalam kasus ini? Saya bahkan mendapat argumen "Tidak menemukan apa pun, jadi benar untuk mengembalikan 200". Saya percaya itu salah karena pohon itu harus selalu ada. Jika kami tidak menemukan apa pun dan kami mengharapkan sesuatu, itu seharusnya 404.
Info lebih lanjut,
Saya lupa menambahkan url yang diambil.
Organisasi
/OrgTree/Get
Tujuan
/GoalTree/GetByDate?versionDate=...
/GoalTree/GetById?versionId=...
Kesalahan saya, kedua parameter diperlukan. Jika ada versiDate yang dapat diuraikan ke tanggal disediakan, itu akan mengembalikan revisi penutup. Jika Anda memasukkan sesuatu di masa lalu, itu akan mengembalikan revisi pertama. Jika oleh Id dengan id yang tidak ada, saya menduga itu akan mengembalikan respons kosong dengan 200.
Tambahan
Juga, saya percaya jawaban terbaik untuk masalah ini adalah untuk membuat objek default ketika organisasi dibuat, tidak memiliki pohon seharusnya tidak menjadi kasus yang valid dan harus dilihat sebagai perilaku yang tidak terdefinisi. Tidak mungkin akun dapat digunakan tanpa kedua pohon. Untuk alasan itu, mereka harus selalu ada.
juga saya ditautkan ini (yang serupa tetapi saya tidak dapat menemukannya)
http://viswaug.files.wordpress.com/2008/11/http-headers-status1.png
/GoalTree/GetById?versionId=CompletelyInvalidID
dikembalikan? Tidak berhasil, karena sumber daya yang disebutkan /GoalTree/GetById?versionId=CompletelyInvalidID
secara harfiah tidak ditemukan.