elixirschool / school_house

The new era of Elixir School now powered by @phoenixframework
https://elixirschool.com/
Apache License 2.0
155 stars 49 forks source link

building-apps-with-plug-router need to set content-type for json ?? #195

Open tomsawyercode opened 2 years ago

tomsawyercode commented 2 years ago

I am reading the next article:

https://elixirschool.com/blog/building-apps-with-plug-router/

In the render_json function the content-type is not set so only receive a raw string.

Then the code must to include the content type:

  get "/getjson" do
    jsonmap = %{key: "value."}
    {:ok, str} = Jason.encode(jsonmap)
    send_resp(conn|>put_resp_content_type("application/json"), 200, str)
  end

Also how can monkey patch or add a function to Plug.route that can be available in all my routes just doing: use Plug.Route or use Plug.RoutePatched

so can use:

send_json(conn,200,map) # for "application/json"

or another for binary->

send_binary(conn,200,buffer) # for 'image/jpeg'

send_attach(conn,200,filebuffer,"filename")#for "content-disposition", "attachment; filename=myfile.csv", to use in CSV,ZIP etc..

Greetings

doomspork commented 2 years ago

Hi @tomsawyercode! Thanks for bringing this to our attention. This is a good call out and something we should change. I'm happy to make the change or defer to you if you'd rather 😁