Middle
DNS aldıktan ve isteği hizmetimize gönderdikten sonra ne oluyor?
sobes.tech yapay zeka
AI'dan gelen yanıt
- Tarayıcı, sunucu ile port 80 (HTTP için) veya 443 (HTTPS için) üzerinde TCP bağlantısı kurar.
- 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.
- Sunucu isteği alır.
- 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.
- 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ı.
- 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.).
- Ruby uygulaması yanıtı web sunucusuna geri gönderir.
- Web sunucusu yanıtı istemciye (tarayıcıya) gönderir.
- 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).
- 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