永利棋牌官方下载-www.55402.com-永利国际唯一指定官网

永利棋牌官方下载提供最新最好玩的真人游戏,www.55402.com是澳门国际娱乐平台官方网站唯一授权会员登录手机版,www.316net,www.366net,516.net,626.net,766.net,www.565.net,www.16.net,bwin62.com,bwin180.com,永利国际唯一指定官网为新老顾客提供更多的精彩娱乐项目,,所有的玩家都可以得到注册送体验金的巨大福利是设身处地为玩家量身订造的经典网站。

phoenix 开发API系列(二)phoenix 各类 api 实现方式

概述

上意气风发篇已经涉及怎么着设置以致利用 phoenix framework 来开拓两个简易的 api。 接着上次的工程,下面演示如何通过 phoenix framework 来营造各种类型的 api 来应对前面叁个的种种诉求。

上面选拔的工程的全体代码已经驾驭在:

phoenix 开发API系列(二)phoenix 各类 api 实现方式。各队 api 的完结示例

restful url 的参数

phoenix 开发API系列(二)phoenix 各类 api 实现方式。introduce by code:

  • controller 中相关代码:
    @doc "/api/param/:name"
    def rest_param1(conn, %{"name" => name}) do
      json conn, %{
        "result": "success",
        "message": "your name is " <> name,
      }
    end

    @doc "/api/param/:name/:age"
    def rest_param2(conn, %{"name" => name, "age" => age}) do
      json conn, %{
        "result": "success",
        "message": "your name is " <> name <> " and age is " <> age,
      }
    end
  • router 相关代码: (router.ex)

    get "/param/:name", ApiParamController, :rest_param1
    get "/param/:name/:age", ApiParamController, :rest_param2
    
  • 起步 phoenix 开采服务器,就能够在浏览器中做客对应的 UHighlanderL

    mix phoenix.server
    

在 浏览器 中访问 和 能够见到再次回到的 json。

GET 央浼中的参数

introduce by code: api的参数的下面的示范相像

  • controller 中相关代码:(api_param_controller.ex)

    @doc "/api/param?name=xxx&age=yyy"
    def rest_param3(conn, params) do
      if Map.has_key?(params, "age") do
        json conn, %{
          "result": "success from rest_param3",
          "message": "your name is " <> params["name"] <> " and age is " <> params["age"],
        }
      else
        json conn, %{
          "result": "success from rest_param3",
          "message": "your name is " <> params["name"],
        }
      end
    end
    
  • phoenix 开发API系列(二)phoenix 各类 api 实现方式。router 相关代码: (router.ex)

    get "/param", ApiParamController, :rest_param3
    
  • 开头 phoenix 开采服务器,就足以在浏览器中访谈对应的 U福睿斯L

    mix phoenix.server
    

在 浏览器 中访问 和 可以看来再次回到的 json。

POST 乞求中的参数

introduce by code: api的参数的下面的演示相似

  • controller 中相关代码:(api_param_controller.ex)

    @doc "/api/param"
    def post_param(conn, params) do
      if Map.has_key?(params, "age") do
        json conn, %{
          "result": "success from post_param",
          "message": "your name is " <> params["name"] <> " and age is " <> params["age"],
        }
      else
        json conn, %{
          "result": "success from post_param",
          "message": "your name is " <> params["name"],
        }
      end
    end
    
  • router 相关代码: (router.ex)

    post "/param", ApiParamController, :post_param
    
  • 起始 phoenix 开拓服务器,就能够在浏览器中访谈对应的 U奥迪Q5L

    mix phoenix.server
    

测量试验api 能够行使 curl 命令:

    curl -X POST -H "Cache-Control: no-cache" -F "name=wyb" "http://localhost:4000/api/param"
    curl -X POST -H "Cache-Control: no-cache" -F "name=wyb" -F "age=33" "http://localhost:4000/api/param"

json 格式参数

introduce by code: api的参数的下边包车型客车亲自过问同样

  • controller 中相关代码:(api_param_controller.ex)

    @doc "/api/json-param"
    def json_param(conn, params) do
      if Map.has_key?(params, "age") do
        json conn, %{
          "result": "success from json_param",
          "message": "your name is " <> params["name"] <> " and age is " <> to_string(params["age"]),
        }
      else
        json conn, %{
          "result": "success from json_param",
          "message": "your name is " <> params["name"],
        }
      end
    end
    
  • router 相关代码: (router.ex)

    post "/json-param", ApiParamController, :json_param
    
  • 初叶 phoenix 开采服务器,就足以在浏览器中访问对应的 UPAJEROL

    mix phoenix.server
    

测量检验api 能够运用 curl 命令:

    curl -X POST -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{
        "name": "wyb"
    }' "http://localhost:4000/api/json-param"

    curl -X POST -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{
        "name": "wyb",
        "age": 33
    }' "http://localhost:4000/api/json-param"

下载 文件

introduce by code: api的参数的地点的演示同样

  • controller 中相关代码:(api_param_controller.ex)

    @doc "/api/file-param"
    def file_param(conn, params) do
      filepath = "/tmp/downloadfile.txt"
      if Map.has_key?(params, "age") do
        File.write(filepath, "your name is " <> params["name"] <> " and age is " <> to_string(params["age"]))
      else
        File.write(filepath, "your name is " <> params["name"])
      end
    
      conn |> send_file(200, filepath)
    end
    
  • router 相关代码: (router.ex)

    get "/file-param", ApiParamController, :file_param
    
  • 开发银行 phoenix 开采服务器,就能够在浏览器中拜望对应的 U卡宴L

    mix phoenix.server
    

在 浏览器 中访问 和 能够看看重临的 json。

上传 文件

introduce by code: api的参数的方面包车型大巴示范同样

  • controller 中相关代码:(api_param_controller.ex)

    @doc "/api/file-param"
    def upload_param(conn, params) do
    
      file = params["file"]
      File.cp(file.path, "/tmp/upload.file")
    
      json conn, %{
        "result": "success from file_param",
        "message": "your name is " <> params["name"] <> " and age is " <> to_string(params["age"])
        <> " and the filename which you upload is " <> file.filename,
      }
    end
    
  • router 相关代码: (router.ex)

    post "/file-param", ApiParamController, :upload_param
    
  • 运营 phoenix 开辟服务器,就足以在浏览器中做客对应的 U君越L

    mix phoenix.server
    

测量试验api 能够选用 curl 命令: 命令中的 file 要替换到你的其实文件路线

    curl -X POST -H "Cache-Control: no-cache" -H "Content-Type: multipart/form-data" 
        -F "name=wyb" -F "age=33" -F "file=@/tmp/test.jpg" "http://localhost:4000/api/file-param"

总结

能够看岀,phoenix framework 的 Plug 提供了增加的效果与利益,所以编写 api 特别实惠。 精通了地方的现身说法,基本就能够满意营造web服务时超越50%的 api 的写法了。

来源:

本文由永利棋牌官方下载发布于永利棋牌官方下载,转载请注明出处:phoenix 开发API系列(二)phoenix 各类 api 实现方式

您可能还会对下面的文章感兴趣: