Elixir Phoenix-ProjWeb.UserController.sign_in/2中没有匹配的函数子句

Elixir Phoenix-ProjWeb.UserController.sign_in/2中没有匹配的函数子句,elixir,phoenix-framework,Elixir,Phoenix Framework,我在中定义了以下路线 router.ex scope "/api/v1", ProjWeb do pipe_through :api post "/sign_up", UserController, :sign_up post "/sign_in", UserController, :sign_in end 下面是控制器的操作 def sign_up(conn, %{"user" => user_params}) d

我在中定义了以下路线
router.ex

    scope "/api/v1", ProjWeb do
        pipe_through :api

        post "/sign_up", UserController, :sign_up
        post "/sign_in", UserController, :sign_in

      end
下面是控制器的操作

def sign_up(conn, %{"user" => user_params}) do
 # example code
 # response
end

def sign_in(conn, %{"user" => %{"email" => email, "password" => password}}) do  
 ### resp
end
/api/v1/sign\u
可用于以下有效负载

{
    "user": {
        "email": "krishna@example.com",
        "name": "Krishna",
        "password": "SUPER_SECRET_PASS!"
    }
}
{
    "user": {
        "email": "krishna@example.com",
        "password": "SUPER_SECRET_PASS!"
    }
}
使用以下有效载荷

{
    "user": {
        "email": "krishna@example.com",
        "name": "Krishna",
        "password": "SUPER_SECRET_PASS!"
    }
}
{
    "user": {
        "email": "krishna@example.com",
        "password": "SUPER_SECRET_PASS!"
    }
}
抛出以下错误

ProjWeb.UserController.sign\u in/2中没有匹配的函数子句

日志:


由于传递的第二个参数是空映射(请参阅日志),因此您的有效负载似乎没有正确通过。由于您的
登录
函数需要一个带有
用户
键的结构,因此它无法与您的调用匹配

听起来您的
内容类型设置错误。您需要确保您正在发送
内容类型:application/json
,以便Phoenix知道您正在发送json信息。

谢谢您的回答,但我已经在问题中发布了我发送的有效负载。我知道了,但Phoenix没有识别它。尝试在(conn,%{})中添加函数
def sign\u
,您将看到此函数将匹配。这意味着你的参数没有被正确解析。你怎么发送这个?您是否有合适的头让Phoenix知道您期望json<代码>内容类型:application/json
@JustinWood谢谢,我使用postman创建请求,而不是设置
Content-Type:application/json
,而是发送
Content-Type:application/javascript
。如果你发布答案,我会很乐意接受。