1

以下のモジュール定義を使用する場合

defmodule Router.Folder do
  use Maru.Router

  namespace :folder do
    route_param :id do
      get do
        IO.puts "ID: " <> params[:id]
        json(conn, %{ user: params[:id], msg: "Hello Elixir World!" })
      end

      params do
        requires :name, type: String
      end

      post do
        IO.puts params[:name]
        IO.puts params[:token]
        IO.puts params[:id]
        IO.puts "Posting"
        json(conn, %{ msg: "Hello Elixir World!" })
        #conn |> text("Hello")
      end

    end  # end route_param :id
  end  # end namespace :folder
end  # end defmodule Router.Folder

defmodule FolderService.API do
  use Maru.Router

  before do
    plug Plug.Logger
    plug Plug.Parsers,
      pass: ["*/*"],
      json_decoder: Poison,
      parsers: [:urlencoded, :json]
  end

  mount Router.Folder
end

このエラーが発生します

** (exit) 例外が発生しました:
** (Maru.Exceptions.InvalidFormat) Parsing Param Error: name
(folder) lib/folder.ex:29: anonymous fn/1 in FolderService.API.route/2
(maru) lib/maru/runtime.ex:25: Maru.Runtime.parse_params/3
(フォルダ) lib/folder.ex:29: FolderService.API.route/2 内の匿名 fn/1
(フォルダ) lib/folder.ex:29 : FolderService.API の匿名 fn/1。error_handler /1
(フォルダー) lib/folder.ex:29: FolderService.API.call/2 の匿名 fn/1
(フォルダー) lib/folder.ex:29: FolderService.API の匿名 fn/1。error_handler /1
(プラグ) lib/plug/adapters/cowboy/handler.ex:15: Plug.Adapters.Cowboy.Handler.upgrade/4
(カウボーイ) src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4

このcurlコマンドを実行すると:

curl -X POST -H "Content-Type: applicaton/json" -d '{"name": "foobar"}' 'http://localhost:9000/folder/1233'

コードは正常に動作しますが、カールすると

curl -X POST -d "name=foobar" 'http://localhost:9000/folder/1233'
4

1 に答える 1

1

モジュールに関するすべてが良さそうです。問題は、上記のように POST リクエストを送信しようとすると、使用した場所を使用curlする必要があることです。colons=

これはうまくいくはずです:curl -X POST -d "name:foobar" 'http://localhost:9000/folder/1233'

POST データの送信例。

ターミナル/コマンドラインから Curl を使用して JSON データを POST し、Spring REST をテストする方法は?

于 2017-01-07T04:58:05.610 に答える