gpt4 book ai didi

rest - Phoenix.ActionClauseError at POST,没有匹配的 Action 子句来处理请求

转载 作者:行者123 更新时间:2023-12-04 00:39:44 24 4
gpt4 key购买 nike

每当我发布到/api/subastas 时,我都会收到此错误

Phoenix.ActionClauseError at POST /api/subastas/ bad request to IascSubastas.SubastaController.create, no matching action clause to process request

如果我运行 mix phoenix.routes,我会看到 :create 被正确路由到 POST/api/subastas

这是router.ex

defmodule IascSubastas.Router do
use IascSubastas.Web, :router

pipeline :browser do
plug :accepts, ["html"]
plug :fetch_session
plug :fetch_flash
plug :protect_from_forgery
plug :put_secure_browser_headers
end

pipeline :api do
plug :accepts, ["json"]
end

scope "/", IascSubastas do
pipe_through :browser # Use the default browser stack

get "/", PageController, :index
end

# Other scopes may use custom stacks.
scope "/api", IascSubastas do
pipe_through :api

resources "/subastas", SubastaController, except: [:new, :edit] do
post "/cancelar", SubastaController, :cancelar
resources "/ofertas", OfertaController, except: [:new, :edit]
end
end
end

和SubastaController

defmodule IascSubastas.SubastaController do
use IascSubastas.Web, :controller

alias IascSubastas.Subasta

def index(conn, _params) do
subastas = Repo.all from s in Subasta, preload: [:mejor_oferta]
render(conn, "index.json", subastas: subastas)
end

def show(conn, %{"id" => id}) do
subasta = Repo.get!(Subasta, id) |> Repo.preload(:mejor_oferta)
render(conn, "show.json", subasta: subasta)
end

def create(conn, %{"subasta" => subasta_params}) do
changeset = Subasta.changeset(%Subasta{mejor_oferta: nil}, subasta_params)

case Repo.insert(changeset) do
{:ok, subasta} ->
conn
|> put_status(:created)
|> put_resp_header("location", subasta_path(conn, :show, subasta))
|> render("show.json", subasta: subasta)
{:error, changeset} ->
conn
|> put_status(:unprocessable_entity)
|> render(IascSubastas.ChangesetView, "error.json", changeset: changeset)
end
end

def update(conn, %{"id" => id, "subasta" => subasta_params}) do
subasta = Repo.get!(Subasta, id) |> Repo.preload(:mejor_oferta)
changeset = Subasta.changeset(subasta, subasta_params)

case Repo.update(changeset) do
{:ok, subasta} ->
render(conn, "show.json", subasta: subasta)
{:error, changeset} ->
conn
|> put_status(:unprocessable_entity)
|> render(IascSubastas.ChangesetView, "error.json", changeset: changeset)
end
end

def cancelar(conn, %{"subasta_id" => id}) do
subasta = Repo.get!(Subasta, id) |> Repo.preload(:mejor_oferta)
changeset = Subasta.changeset(subasta, %{terminada: true})

case Repo.update(changeset) do
{:ok, subasta} ->
render(conn, "show.json", subasta: subasta)
{:error, changeset} ->
conn
|> put_status(:unprocessable_entity)
|> render(IascSubastas.ChangesetView, "error.json", changeset: changeset)
end
end

def delete(conn, %{"id" => id}) do
subasta = Repo.get!(Subasta, id)

# Here we use delete! (with a bang) because we expect
# it to always work (and if it does not, it will raise).
Repo.delete!(subasta)

send_resp(conn, :no_content, "")
end
end

我只在 http://localhost:4000/api/subastas/ 处收到错误,任何其他 URL 都可以正常工作。

最佳答案

POST 中缺少 content_type! “应用程序/json”

关于rest - Phoenix.ActionClauseError at POST,没有匹配的 Action 子句来处理请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33985012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com