Sobes.tech
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

  1. Brauzer, server ilə TCP əlaqəsini 80 portunda (HTTP üçün) və ya 443 portunda (HTTPS üçün) qurur.
  2. 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.
  3. Server sorğunu qəbul edir.
  4. 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.
  5. 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.
  6. 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.).
  7. Ruby tətbiqi cavabı geri veb serverə göndərir.
  8. Veb server cavabı müştəriyə (brauzerə) göndərir.
  9. 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.
  10. 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