Rails, kutudan RESTful kaynaklarla geliyor, ancak bunları gerçek genel API'niz için kullanıyor musunuz? Eğer öyleyse, API'nızın versiyonunu nasıl yapabilirdiniz? example.com/api/v2/foo/bar
?Raylar üzerinde RESTful bir kamu API'sı tasarlamak için en iyi yöntemler nelerdir?
cevap
Genelde, uygulamalarımın API'leri gerçekten HTML arayüzünü oluşturan kaynaklarda oluşturulmuştur. Bazıları için (ben değil), bu sadece scaffold üretecinden çıkan kodu kullanıyor olabilir - ancak özel yazmam veya jeneratörü kullanmama izin verip vermeme bakılmaksızın, kaynakları yalnızca programatik olarak gösterdiğim çok az örnek var. API ve son kullanıcı görünümüne değil.
Sürüm oluşturma, şimdiye kadar oluşturduğum uygulamalar için bir sorun olmadı, ancak bunu uygulamak için iki yol düşünebilirim.
1) Eğer bu durumda kontrol ünitesine erişim işleme oluşmaya belirtmek için bir parametre set önek 'v1' 'v2' vb ile yolları ekleyebilirsiniz: rotalara
. rb:
posts_controller.rbclass PostsController < ApplicationController
def index
respond_to do |format|
format.xml do
if params[:version] == 'v1'
# ...
else
# ...
end
end
end
end
end
2) Ayrıca, her bir versiyonu için özel yanıt biçimi eklemeyi düşünebilirsiniz içinde
map.resources :posts, :path_prefix => '/:version'
başlatıcılar
/mime_types.rb posts_controller.rb içinde
Mime::Type.register_alias "application/xml", :v1
Mime::Type.register_alias "application/xml", :v2
class PostsController < ApplicationController
def index
respond_to do |format|
format.v1 do
# ...
end
format.v2 do
# ...
end
end
end
end
eski size example.com/v1/posts.xml ve example.com/v2/ gibi URL'leri verecekti posts.xml; ikincisi size example.com/posts.v1 ve example.com/posts.v2 gibi URL'leri verirdi.
- 1. Uygulama ayarları için tablo görünümünü tasarlamak için en iyi yöntemler?
- 2. Bir cassandra kümesini yedeklemek için en iyi yöntemler nelerdir?
- 3. nhibernate: eşitliği uygulamak için en iyi yöntemler nelerdir?
- 4. Html Grafikleri için en iyi yöntemler
- 5. AIX üzerinde bina ve paketleme için en iyi yöntemler
- 6. Permalink ajax sayfaları için en iyi yöntemler
- 7. Topaklar için en iyi yöntemler Dizin sayfası
- 8. ElasticSearch'te alan adları için en iyi yöntemler
- 9. Ses akışı için en iyi yöntemler
- 10. PHP oturum verilerini bir veritabanında depolamak için en iyi yöntemler nelerdir?
- 11. Bir Catalyst uygulamasını bir üretim sunucusuna dağıtmak için en iyi yöntemler nelerdir?
- 12. C#: En İyi Yöntemler Debug.Print
- 13. Karınca öğrenmek için en iyi kaynaklar nelerdir?
- 14. Kendi istisna sınıflarınızı tanımlamak için en iyi yöntemler?
- 15. Avro'da belirli veri türleri için en iyi yöntemler
- 16. Powershell cmdlet'i geliştirme en iyi yöntemler
- 17. Bir galerinin en iyi JavaScript uygulamaları nelerdir?
- 18. Bir nesneyi diğerine eşleme için en iyi yöntemler
- 19. Çapraz platformda Mysql veritabanı şemasını korumak için en iyi yöntemler nelerdir?
- 20. Sürüm kontrol sistemleri arasında hareket etmek için en iyi yöntemler nelerdir?
- 21. raylar en iyi uygulamalar nerede javascript
- 22. Bir vb.net programcısı için en iyi DI-IOC referansları nelerdir?
- 23. gdb kullanarak hata ayıklama - En iyi yöntemler
- 24. ASP.Net MVC Çerezleri En İyi Yöntemler
- 25. Adlandırma tanımlama bilgileri - en iyi yöntemler
- 26. Liste dizilerini kullanma - En iyi yöntemler
- 27. Raylar dağıtımı - en iyi yol
- 28. En iyi Visual Studio eklentileri nelerdir?
- 29. Özel http kullanıcı aracı dizeleri için en iyi yöntemler?
- 30. Amazon SQS'yi kullanmak için en iyi yöntemler - Sorgulama yok
Gerçek iş mantığının farklı olup olmadığını belirlemek için başka bir seçenek de, isim verilen yolları kullanmak olurdu. – Kris