Başlık az çok ya da daha önemsizdir. JSON MediaTypeFormatter'ı, rota başına farklı davranması için yapılandırmaya çalışıyorum.Web API'sında Route Formatter Yapılandırması Başına
Özellikle, WebAPI'mda aynı denetleyiciyle eşlenen iki yol var. Her rota aynı işlemi gerçekleştirir ve aynı verileri döndürür, ancak mevcut tüketicilerle geriye doğru karşılaştırılabilir olmaları için çıktılarını biraz farklı şekilde biçimlendirmeleri gerekir.
Denetleyiciye, eski rotada veya yeni rotada isteğin gelip gelmediğini belirlemek ve buna göre biçimlendiricileri değiştirmek için bazı kodlar koyabilirim.
Gerekli durumlarda biçimlendiricileri değiştirmek için bir ActionFilter kullanabilirim.
Ancak, her bir yol düzeyinde biçimlendiricileri yapılandırmanın bir yolu olup olmadığını merak ettim, çünkü bu, API'mn farklı davrantığı soyutlama seviyesidir. Bu, Yol Yapılandırması veya bir Delege İşleyicisi'nde olabilir.
Herhangi bir öneriniz var mı?
Evet, özel bir MediaTypeFormatter kullanmayı düşünmüştüm; Yukarıdaki örneğiniz, elde etmeye çalıştığım şeylere benzer; ama mantığı koyarak, uygulama mantığını, uygulamadan bağımsız olarak uygulanması gereken bir şeyle tanıştırmaktan endişe duyuyorum. Seçiciyim, biliyorum ve çözümünüz kesinlikle işe yaramaz - ama içimdeki temizlikçi benim endişeleri iyi ve gerçekten ayrı tutmayı sever. –
Her denetleyici yapılandırmasını kullanabilirsiniz (* IControllerConfiguration * http://blogs.msdn.com/b/jmstall/archive/2012/05/11/per-controller-configuration-in-webapi.aspx) ve bunu kaydettirin "özel" biçimlendirici yalnızca uyguladığı bir denetleyici için. Bu şekilde çekirdek uygulama hala varsayılan biçimlendirici kullanır, ancak daha fazla gereksinimi olan bir denetleyici, belirli bir kullanır. –
Aslında bunun gerçekten bir Eylem Filtresi kullanmanın nasıl farklı olduğunu görmüyorum. Infact Bir IControllerConfiguration özniteliği ile bunu başarabileceğime emin değilim, çünkü bunlar içeriğe dayalı bilgiler için rotaya/isteklere erişemezler. –