Middle
DNS-i aldıqdan və xidmətimizə sorğu göndərdikdən sonra nə baş verir?
sobes.tech Süni İntellekt
AI-dan cavab
- Brauzer, server ilə TCP əlaqəsini 80 portunda (HTTP üçün) və ya 443 portunda (HTTPS üçün) qurur.
- Brauzer, metod (GET, POST və s.), tələb olunan resursun yolu, protokol versiyası, başlıqlar (User-Agent, Accept, Cookie və s.) və ehtimal ki, sorğu gövdəsini (POST üçün) ehtiva edən HTTP sorğusu göndərir.
- Server sorğunu qəbul edir.
- Veb server (məsələn, Nginx, Apache) sorğunu qəbul edir və, əgər konfiqurasiya olunubsa, onu Ruby tətbiqinə (məsələn, Rack, Passenger, Unicorn vasitəsilə) ötürür.
- Ruby tətbiqi sorğunu emal edir. Bu, aşağıdakılardan ibarətdir:
- Yolu və metoduna əsasən sorğunu müvafiq nəzarətçi və əməliyata yönəltmək.
- URL, başlıqlar və sorğu gövdəsindən parametrləri çıxarmaq.
- Tətbiq məntiqini icra etmək (məsələn, verilənlər bazası ilə qarşılıqlı əlaqə, hesablamalar).
- Cavab hazırlamaq.
- Ruby tətbiqi HTTP cavabını yaradır. Bu, aşağıdakılardan ibarətdir:
- Status kodu (məsələn, 200 OK, 404 Not Found, 500 Internal Server Error).
- Cavab başlıqları (Content-Type, Content-Length, Set-Cookie və s.).
- Cavab gövdəsi (HTML, JSON, XML və s.).
- Ruby tətbiqi cavabı geri veb serverə göndərir.
- Veb server cavabı müştəriyə (brauzerə) göndərir.
- Brauzer cavabı alır, onu analiz edir, alınan məlumatları (əgər HTML isə) render edir və əlavə sorğuları (məsələn, CSS, JS, şəkillər üçün) emal edir.
- TCP əlaqəsi bağlana və ya növbəti sorğular üçün saxlanıla bilər (Keep-Alive).
# Rails-də əsas yönləndirmə nümunəsi
# config/routes.rb
Rails.application.routes.draw do
root 'welcome#index' # Əsas URL-i welcome nəzarətçisinə, index əməliyyatına yönləndirir
get 'users/:id', to: 'users#show' # GET /users/:id yönləndirməsi users nəzarətçisinə, show əməliyyatına
end
# Rails-də nəzarətçi nümunəsi
# app/controllers/users_controller.rb
class UsersController < ApplicationController
def show
@user = User.find(params[:id]) # URL-dən :id parametrini alır və istifadəçini axtarır
# @user-u render et (adətən, view şablonu vasitəsilə)
rescue ActiveRecord::RecordNotFound
render file: "#{Rails.root}/public/404.html", status: :not_found # Tapılmayan istifadəçi halını idarə etmək
end
end