• Phoenix Framework


    Phoenix 是一个web开发框架,写入Elixir中它执行的是服务器端模型-视图-控制器(MVC)模式。许多它的组件和概念看起来和我们熟悉的其他web框架相似,比如Ruby 写的Rails 或是 python的Django框架。
    Phoenix提供了一个两全齐美的方案:高效的开发生产力和高效的应用性能。Phoenix还提供了全新的特性:像channels 可以提供实时交互的功能,预编译模版提供更高的速度。

    hello_web

    • Phoenix.endPoint: endpoint包含了所有请求都要经过的公共和初始路由。如果你想要在所有的请求上都添加上某些操作,请添加到此文件
    • Phoenix.router: router负责分配动作/路径到控制器。router允许我们定义单独的功能区域;例如:我们的应用中有部分页面需要用户验证,其他的则不需要。
    • Phoenix.Controller: controller的功能是检索请求的信息,并与业务层交互,给展示层准备数据。
    • Phoenix.View:view是处理从controller获取到的结构化数据,并且将数据转化成文稿展现给用户。

    Routing

    Router路由是Phoenix应用中最主要的总线。他可以匹配HTTP请求到controller actions,连通实时频道处理,并且还给一些路由定义了一系列的管道转换域。
    路由模块名称的定义方式为应用的名字作为前缀+Web+.Router

    一条路由的书写方式:
    Http操作 路由, 控制器, :action

    使用$ mix phx.routes命令可以查看应用中定义的所有路由。

    resource定义路由

    使用resource定义路由,可以定义一个标准的路由矩阵,格式为
    resource 路由,控制器,resource还可以嵌套定义

    scope "/", HelloWeb do
      pipe_through :browser
    
      get "/", PageController, :index
      resources "/users", UserController
      ...
    end
    # 执行mix phx.routes 打印的resource的结果
    ...
    user_path  GET     /users           HelloWeb.UserController :index
    user_path  GET     /users/:id/edit  HelloWeb.UserController :edit
    user_path  GET     /users/new       HelloWeb.UserController :new
    user_path  GET     /users/:id       HelloWeb.UserController :show
    user_path  POST    /users           HelloWeb.UserController :create
    user_path  PATCH   /users/:id       HelloWeb.UserController :update
               PUT     /users/:id       HelloWeb.UserController :update
    user_path  DELETE  /users/:id       HelloWeb.UserController :delete
    ...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    Pipelines

    Pipelines是一组可以被关联上特殊作用域的插件;
    Routes 被定义在 scopes 作用域内并且这个作用域可以穿越多个管道。一旦一个路由被匹配,Phoenix将会调用这个路由关联的所有 pipelines 插件。例如:访问 /将会通过 :browser 管线,于是会调用虽有的插件。
    Pipeline默认定义了2种类型,:browser:api,他们可以被一系列的基本的任务应用。我们可以根据自身的需求创建我们自己的 pipelines

    The :browser:api pipelines

    像browser和api的名字一样,:browserpipeline是为应用在响应浏览器端渲染请求的路由而准备的,:api pipeline是为响应产品数据 API 请求而准备的

    Forward

    Phoenix.Router.forward/4宏可以被用于,将所有的以某个特殊路径开头的请求都发送到一个特殊的插件上。

  • 相关阅读:
    英语四六级高频核心词(故事版)
    typescript:内置工具类型
    古代流传最广的19个智谋故事
    知识点回顾
    SQL优化--分页优化(limit)
    Ims服务架构
    ORM数据库操作
    回归预测 | Matlab实现基于MIC-BP最大互信息系数数据特征选择算法结合BP神经网络的数据回归预测
    ChatGPT 和 Elasticsearch:APM 工具、性能和成本分析
    Shiro和Spring Security对比
  • 原文地址:https://blog.csdn.net/HobbitHero/article/details/126261029