R.Reddington

WFN Üye
Konular
527
Mesajlar
527
Çözüm
0
Ticaret Puanı
0
Üyelik
24 Gün
Konum
Kastamonu
Web Sitesi
Var
Alanı
Sosyal Backlink
1/1
Konu sahibi
İlk API’nizi oluşturmak için Rails’in API-only uygulama tipini kullanın: rails new kitap_api --api, ardından bir kaynak üretip veritabanını hazırlayın ve JSON yanıtlarını curl ile doğrulayın. Aşağıdaki örnekte Book kaynağı üzerinden çalışan listeleme, tek kayıt görüntüleme, oluşturma, güncelleme ve silme uç noktaları elde edilir.

API-only Rails uygulamasını oluşturma​


Ön koşul olarak Ruby, Rails ve uygulamanızın kullanacağı veritabanı sistemi kurulu olmalıdır. Terminalde yeni projeyi oluşturun:

Bash:
rails new kitap_api --api
cd kitap_api

--api seçeneği, tarayıcıya HTML sayfası sunan klasik Rails yapısı yerine JSON tabanlı istemciler için daha uygun, daha küçük bir uygulama iskeleti oluşturur. Bu yapı; web arayüzü, mobil uygulama veya başka bir sunucunun HTTP üzerinden veri alıp göndermesi için kullanılabilir.

Bir REST kaynağı oluşturma​


REST yaklaşımında bir kaynak, belirli bir veri türünü HTTP yöntemleriyle yönetir. Örnekte kaynak türü Book, yani kitaptır. Aşağıdaki komut model, migration, denetleyici ve rotaları birlikte üretir:

Bash:
bin/rails generate scaffold Book title:string author:string published_year:integer
bin/rails db:create db:migrate

title, author ve published_year alanları veritabanındaki sütunları temsil eder. db:migrate komutu çalıştırıldığında tablo oluşturulur. Migration başarısız olursa önce hata mesajındaki veritabanı bağlantısını, ardından config/database.yml içindeki bağlantı ayarlarını kontrol edin. Tablo oluşturulmadan API isteği gönderirseniz uygulama beklenen veriyi okuyamaz.

Scaffold komutu genellikle config/routes.rb dosyasına şu kaynağı ekler:

Ruby:
resources :books

Bu tanım, kitaplar için REST rotalarını oluşturur. İsterseniz dosyayı açıp yalnızca API’de kullanacağınız rotaları açıkça sınırlayabilirsiniz:

Ruby:
Rails.application.routes.draw do
  resources :books, only: %i[index show create update destroy]
end

İsteklerin ve yanıtların işleyişi​


Oluşturulan BooksController, HTTP yöntemine göre ilgili işlemi çalıştırır. Temel eşleşme şöyledir:
HTTP yöntemiUç noktaİşlem
GET/booksTüm kitapları döndürür
GET/books/11 numaralı kitabı döndürür
POST/booksYeni kitap oluşturur
PATCH veya PUT/books/1Kitabı günceller
DELETE/books/1Kitabı siler
Listeyi kontrol etmek için sunucu çalışırken başka bir terminalde şu isteği gönderin:

Bash:
bin/rails server
curl -i http://localhost:3000/books

Henüz kayıt eklenmediği için beklenen gövde [] olabilir. Bu sonuç, rotanın ve sorgunun çalıştığını gösterir; ancak veri ekleme işleminin başarıyla yapıldığını kanıtlamaz.

Yeni kayıt oluşturmak için JSON gövdeli bir POST isteği gönderin:

Bash:
curl -i -X POST http://localhost:3000/books \
  -H "Content-Type: application/json" \
  -d '{"book":{"title":"Örnek Kitap","author":"Ayşe Yılmaz","published_year":2024}}'

Başarılı istekte HTTP durum kodu genellikle 201 Created olur ve yanıt gövdesinde oluşturulan kitap bulunur. Yanıt 400 veya 422 ise gönderilen JSON’un yapısını ve model doğrulamalarını kontrol edin. İstemcinin gönderdiği alan adları modeldeki alanlarla eşleşmelidir; eksik veya geçersiz veri, kaydın oluşturulmamasına neden olabilir.

show uç noktasını, oluşturulan kimliği kullanarak sınayın:

Bash:
curl -i http://localhost:3000/books/1

Buradaki 1 yalnızca örnektir; gerçek kimliği POST yanıtından veya GET /books sonucundan alın. 404 Not Found, rotanın çalışmadığını değil, istenen kimlikte kayıt bulunmadığını gösterir. Bu durumda önce listeyi çağırıp mevcut kimlikleri kontrol edin.

Doğrulama ve güvenli giriş​


Üretim uygulamasında zorunlu alanları modelde doğrulayın:

Ruby:
class Book < ApplicationRecord
  validates :title, :author, presence: true
  validates :published_year, numericality: { only_integer: true }, allow_nil: true
end

İstemciden gelen veriyi doğrudan güvenilir kabul etmeyin. Scaffold tarafından oluşturulan güçlü parametreler yalnızca izin verilen alanların kaydedilmesini sağlar. Kimlik doğrulama, yetkilendirme, hız sınırlaması ve CORS ayarları ise rails new --api komutuyla otomatik olarak tamamlanmaz; bunlar uygulamanızın kullanıcı ve istemci modeline göre ayrıca tasarlanmalıdır.

API’nin temel akışı tamamlandığında GET, POST, PATCH ve DELETE isteklerini gerçek istemcinizle deneyin. Her istekte HTTP durum kodunu, JSON gövdesini ve veritabanındaki değişikliği birlikte kontrol edin; yalnızca 200 yanıtı görmek, verinin iş kurallarınıza uygun kaydedildiğini tek başına kanıtlamaz.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Foruma git ?

Bu konuyu görüntüleyen kullanıcılar

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic