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
。如果你发布答案,我会很乐意接受。