Bir proje üzerinde çalışıyorum ve iş yerindeki insanlarla yaklaşık bir saatten fazla çalıştıktan sonra. Borsadaki insanların ne söyleyebileceğini öğrenmeye karar verdim.
Bir sistem için bir API yazıyoruz, bir Organizasyon ağacını veya Hedefler ağacını döndürmesi gereken bir sorgu var.
Organizasyon ağacı, kullanıcının bulunduğu organizasyondur, Başka bir deyişle, bu ağaç daima mevcut olmalıdır. Organizasyonda, bir hedef ağacı daima mevcut olmalıdır. (tartışma başladığı yer). Ağacın olmadığı durumlarda, iş arkadaşım 200 durum koduyla cevabını cevaplamanın doğru olacağına karar verdi. Daha sonra, ağaç yokken uygulama ayrıldığından kodumu düzeltmemi istedi.
Alev ve öfke biriktirmeye çalışacağım.
Ağaç olmadığında 404 hatası üretmeyi önerdim. En azından bir şeyin yanlış olduğunu bilmeme izin verecek. 200 kullanırken, hataları işlemek için geri aramadaki yanıtımı özel olarak kontrol etmem gerekiyor. Bir nesne almayı bekliyorum, ancak boş bir yanıt alabilirim çünkü hiçbir şey bulunamadı. Yanıtı 404 olarak işaretlemek tamamen adil gözüküyor. Sonra savaş başladı ve HTTP durum kodu şemasını anlamadığım mesajını aldım. Yani buradayım ve bu davada 404'ün neyin yanlış olduğunu soruyorum? Hatta "Bu argüman var buldum şey, bu yüzden doğru 200 dönmek var". Ağacın daima mevcut olması gerektiği için yanlış olduğuna inanıyorum. Hiçbir şey bulamazsak ve bir şey bekliyorsak, 404 olmalı.
Daha fazla bilgi,
Alınan URL’leri eklemeyi unuttum.
Organizasyonlar
/OrgTree/Get
Hedef
/GoalTree/GetByDate?versionDate=...
/GoalTree/GetById?versionId=...
Benim hatam, her iki parametre de gerekli. Bir tarihe ayrıştırılabilecek herhangi bir versionDate sağlanmışsa, kapanış revizyonunu döndürür. Geçmişte bir şey girerseniz, ilk revizyona geri dönecektir. Eğer kimliği olmayan bir kimliğe göre, 200 ile boş bir cevap vereceğinden şüpheleniyorum.
Ekstra
Ayrıca, sorunun en iyi cevabının, kuruluşlar oluşturulduğunda varsayılan nesneler oluşturmak olduğuna, hiçbir ağacın bulunmamasının geçerli bir durum olmamasına ve tanımlanmamış bir davranış olarak görülmesi gerektiğine inanıyorum. Bir hesap her iki ağaç olmadan da kullanılamaz. Bu sebeplerden dolayı daima mevcut olmalıdırlar.
ayrıca bunu da bağladım (benzer ama bulamıyorum)
http://viswaug.files.wordpress.com/2008/11/http-headers-status1.png
/GoalTree/GetById?versionId=CompletelyInvalidID
dönmeli? Başarısız değil, adı verilen kaynak /GoalTree/GetById?versionId=CompletelyInvalidID
tam anlamıyla bulunamadı.