Sobes.tech
Middle

DNS aldıktan ve isteği hizmetimize gönderdikten sonra ne oluyor?

sobes.tech yapay zeka

AI'dan gelen yanıt

  1. Tarayıcı, sunucu ile port 80 (HTTP için) veya 443 (HTTPS için) üzerinde TCP bağlantısı kurar.
  2. Tarayıcı, yöntemi (GET, POST vb.), istenen kaynağın yolu, protokol sürümü, başlıklar (User-Agent, Accept, Cookie vb.) ve muhtemelen istek gövdesini (POST için) içeren bir HTTP isteği gönderir.
  3. Sunucu isteği alır.
  4. Web sunucusu (örneğin, Nginx, Apache), yapılandırılmışsa, isteği Ruby uygulamasına (örneğin, Rack, Passenger, Unicorn aracılığıyla) iletir.
  5. Ruby uygulaması isteği işler. Bu, şunları içerir:
    • Yol ve metoda göre isteğin uygun denetleyici ve eyleme yönlendirilmesi.
    • URL, başlıklar ve istek gövdesinden parametrelerin çıkarılması.
    • Uygulama mantığının yürütülmesi (örneğin, veritabanı ile etkileşim, hesaplamalar).
    • Yanıtın hazırlanması.
  6. Ruby uygulaması bir HTTP yanıtı oluşturur. Bu, şunları içerir:
    • Durum kodu (örneğin, 200 OK, 404 Not Found, 500 Internal Server Error).
    • Yanıt başlıkları (Content-Type, Content-Length, Set-Cookie vb.).
    • Yanıt gövdesi (HTML, JSON, XML vb.).
  7. Ruby uygulaması yanıtı web sunucusuna geri gönderir.
  8. Web sunucusu yanıtı istemciye (tarayıcıya) gönderir.
  9. Tarayıcı yanıtı alır, analiz eder, alınan verileri işler (eğer HTML ise) ve ek istekleri işler (örneğin, CSS, JS, resimler için).
  10. TCP bağlantısı kapatılabilir veya sonraki istekler için sürdürülebilir (Keep-Alive).
# Rails'de temel yönlendirme örneği
# config/routes.rb
Rails.application.routes.draw do
  root 'welcome#index' # Ana URL'yi welcome denetleyicisinin index eylemine yönlendirir
  get 'users/:id', to: 'users#show' # GET /users/:id yönlendirmesi users denetleyicisinin show eylemine
end

# Rails'de denetleyici örneği
# app/controllers/users_controller.rb
class UsersController < ApplicationController
  def show
    @user = User.find(params[:id]) # URL'den :id parametresini alır ve kullanıcıyı arar
    # @user'ı render et (genellikle view şablonu aracılığıyla)
  rescue ActiveRecord::RecordNotFound
    render file: "#{Rails.root}/public/404.html", status: :not_found # Kullanıcı bulunamazsa hata sayfası göster
  end
end