5

Trong khung công tác Phoenix, làm cách nào để định tuyến một loại phương tiện tùy chỉnh trong Chấp nhận?Phoenix Framework: Cách định tuyến loại phương tiện tùy chỉnh?

Phoenix's own code comments cho biết những điều sau đây là tất cả những gì cần thiết — cộng với việc biên dịch lại thông tin chi tiết, mặc dù sự cần thiết phải thoát khỏi tôi. Nhưng, điều này dường như không làm việc:

config.exs:

[…] 

config :plug, :mimes, %{ 
    "application/vnd.api+json" => ["json-api"] 
} 

router.ex:

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

[…] 

scope "/", SomeApp do 
    pipe_through :api 

    […] 

some_test.ex:

setup do 
    conn = conn() |> put_req_header("accept", "application/vnd.api+json") 
    {:ok, conn: conn} 
end 

yêu cầu tất cả các bài kiểm tra (sử dụng conn từ thiết lập) nhận phản hồi HTTP 406.

+0

Bạn đang lập bản đồ ' "api-json"' trong cấu hình của bạn, nhưng bạn đang đi qua ' "json-api"' để bạn chấp nhận cắm. Typo trong câu hỏi hoặc lỗi đánh máy trong mã của bạn? Điều đó có vẻ giống như thủ phạm có khả năng –

+0

@ChrisMcCord Cảm ơn bạn đã chỉ ra điều đó, chỉ có lỗi đánh máy trong câu hỏi mà tôi sợ, tức là mã tôi đã thử nghiệm không có vấn đề đó và vẫn không hoạt động. Đã sửa câu hỏi. –

+1

Bạn có thể chỉ định "có vẻ không hoạt động không?". Điều gì không hoạt động? Bạn đang mong đợi điều gì và bạn đang nhận được gì? Ngoài ra, hãy chắc chắn rằng sự phụ thuộc của bạn đã được biên dịch lại, 'rm -rf _build' nếu nghi ngờ. –

Trả lời

7

Hóa ra rằng sau đây là đủ:

% touch deps/plug/mix.exs 
% mix deps.compile plug 
% mix clean 

Thay vào đó, như @ José-valim gợi ý trong ý kiến ​​của câu hỏi, xóa toàn bộ thư mục _build đã làm các trick. Tôi đã đi lại một vài lần để chắc chắn, và mỗi lần tôi chỉ chạm và deps.compiled, không có niềm vui, và mỗi lần tôi loại bỏ _build, niềm vui.

+0

Cảm ơn bạn. Tôi đã dành một thời gian dài cố gắng tìm ra cách để chạy thử nghiệm với ja_serializer. –

Các vấn đề liên quan