Sobes.tech
Middle

Kas notiek pēc tam, kad mēs saņemam DNS un nosūtām pieprasījumu mūsu pakalpojumam?

sobes.tech AI

Atbilde no AI

  1. Pārlūkprogramma izveido TCP savienojumu ar serveri, izmantojot 80 portu (HTTP) vai 443 portu (HTTPS).
  2. Pārlūkprogramma nosūta HTTP pieprasījumu, kas ietver metodi (GET, POST utt.), pieprasāmā resursa ceļu, protokola versiju, galvenes (User-Agent, Accept, Cookie utt.) un, iespējams, pieprasījuma ķermeni (POST).
  3. Serveris saņem pieprasījumu.
  4. Tīmekļa serveris (piemēram, Nginx, Apache) pieņem pieprasījumu un, ja tas ir konfigurēts, pārsūta to Ruby lietojumprogrammai (piemēram, caur Rack, Passenger, Unicorn).
  5. Ruby lietojumprogramma apstrādā pieprasījumu. Tas ietver:
    • Pieprasījuma maršrutēšanu uz atbilstošo kontrolieri un darbību pēc ceļa un metodes;
    • Parametru iegūšanu no URL, galvenēm un ķermeņa;
    • Lietojumprogrammas loģikas izpildi (piemēram, datu bāzes mijiedarbību, aprēķinus);
    • Atbildes sagatavošanu.
  6. Ruby lietojumprogramma veido HTTP atbildi. Tā ietver:
    • Statusa kodu (piemēram, 200 OK, 404 Not Found, 500 Internal Server Error);
    • Atbildes galvenes (Content-Type, Content-Length, Set-Cookie utt.);
    • Atbildes ķermeni (HTML, JSON, XML utt.).
  7. Ruby lietojumprogramma nosūta atbildi atpakaļ tīmekļa serverim.
  8. Tīmekļa serveris nosūta atbildi klientam (pārlūkprogrammai).
  9. Pārlūkprogramma saņem atbildi, analizē to, attēlo saņemtos datus (ja tas ir HTML) un apstrādā papildu pieprasījumus (piemēram, CSS, JS, attēli).
  10. TCP savienojums var tikt slēgts vai saglabāts nākamajiem pieprasījumiem (Keep-Alive).
# Piemērs pamata maršrutēšanai Rails
# config/routes.rb
Rails.application.routes.draw do
  root 'welcome#index' # Galvenais URL maršrutē uz welcome kontrolieri, index darbību
  get 'users/:id', to: 'users#show' # GET /users/:id maršrutē uz users kontrolieri, show darbību
end

# Kontroliera piemērs Rails
# app/controllers/users_controller.rb
class UsersController < ApplicationController
  def show
    @user = User.find(params[:id]) # Iegūt :id parametru no URL un meklēt lietotāju
    # Rādīt @user (parasti caur skatu šablonu)
  rescue ActiveRecord::RecordNotFound
    render file: "#{Rails.root}/public/404.html", status: :not_found # Ja lietotājs nav atrasts
  end
end