Sobes.tech
Middle

DNS алгандан жана биздин кызматка суроо-талап жөнөткөндөн кийин эмне болот?

sobes.tech AI

AIден жооп

  1. Браузер сервер менен TCP байланышын орнотот, ал үчүн 80 порту (HTTP) же 443 порту (HTTPS) колдонулат.
  2. Браузер HTTP суроо-талап жиберет, ал төмөнкүлөрдү камтыйт:
    • ыкма (GET, POST ж.б.),
    • суралган ресурстун жолу,
    • протоколдун версиясы,
    • башталыштар (User-Agent, Accept, Cookie жана башка),
    • мүмкүн болсо, суроо-талаптын денеси (POST үчүн).
  3. Сервер суроо-талапты алат.
  4. Веб-сервер (мисалы, Nginx, Apache) суроо-талапты кабыл алып, эгер конфигурацияланган болсо, аны Ruby тиркемесине (мисалы, Rack, Passenger, Unicorn аркылуу) өткөрөт.
  5. Ruby тиркемеси суроо-талапты иштетет. Бул төмөнкүлөрдү камтыйт:
    • Суроо-талаптын жолу жана ыкма боюнча тиешелүү контроллер жана аракетке маршрутизация;
    • URL, башталыштар жана денеден параметрлерди алуу;
    • Тиркеменин логикасын иштетүү (мисалы, маалымат базасы менен иштөө, эсептөөлөр);
    • Жоопту даярдоо.
  6. Ruby тиркемеси HTTP-жооп түзөт. Ал төмөнкүлөрдү камтыйт:
    • Статус-код (мисалы, 200 OK, 404 Not Found, 500 Internal Server Error);
    • Жооп башталыштары (Content-Type, Content-Length, Set-Cookie жана башка);
    • Жооптун денеси (HTML, JSON, XML жана башка).
  7. Ruby тиркемеси жоопту кайра веб-серверге жиберет.
  8. Веб-сервер жоопту кардарга (браузерге) жиберет.
  9. Браузер жоопту алат, аны талдайт, алынган маалыматтарды көрсөтөт (эгер ал HTML болсо) жана кошумча суроолорду иштетет (мисалы, CSS, JS, сүрөттөр).
  10. TCP байланышы жабылат же кийинки суроолор үчүн сакталат (Keep-Alive).
# Rails'деги негизги маршрутизациянын мисалы
# config/routes.rb
Rails.application.routes.draw do
  root 'welcome#index' # Негизги URL'ди welcome контроллеринин index аракетине маршруттоо
  get 'users/:id', to: 'users#show' # GET /users/:id маршрутизациясы, users контроллеринин show аракетине
end

# Rails'деги контроллердин мисалы
# app/controllers/users_controller.rb
class UsersController < ApplicationController
  def show
    @user = User.find(params[:id]) # URL'ден :id параметрин алуу жана колдонуучуну издөө
    # @user көрсөтүү (көбүнчө view шаблону аркылуу)
  rescue ActiveRecord::RecordNotFound
    render file: "#{Rails.root}/public/404.html", status: :not_found # Колдонуучу табылбаган учурда иштетүү
  end
end