我正在使用REST API,我非常喜歡使用內容協商來確定要發送的表示。我的應用程序基於Flask框架,所以自然我正在使用mimerender軟件包。我有適用於HTML,JSON和XML的資源變體選擇。但後來我嘗試了一個僞造的mimetype,比如application/foobar。我期望看到一個406錯誤代碼,但是我得到了200個響應代碼和XML表示。如何從mimerender返回406錯誤代碼?
查看源代碼,看起來mimerender默認爲任何mimetype在其mimetypes列表中的第一個,這是當前的XML。
我的問題是兩個部分:
誰寫mimerender這傢伙(我希望他讀了這個問題)知道他在做什麼,他一定是故意選擇提供一個默認的表示,而不是一些很好的理由,406錯誤代碼。發送一些(有點隨機的)表示的原因是什麼,而不是告訴客戶你沒有他們要求的東西?
假設我固執地不想發送默認表示,並且我寧願發送406錯誤,我怎麼能在Flask和mimerender的範圍內做到這一點?我能想到的一種可能性是註冊一個假的mimetype,將其設置爲默認值,並在其處理程序中調用abort(406)。但這似乎很難。
哇,你太棒了。我同意按照規範結束不可接受的迴應是可以接受的,但是我很高興您同意發送空白406響應的用例。 –