想請教 API 製作 response render body 的問題


#1

各位好! 小的遇到,在製作要 response 給對方時,若對方要求 body不要傳任何值 該如何寫呢?

小的測試過以下,感覺都不行,對方使用 angular 接收到都會是個空字串,如 “” 這樣子的!,想問如何傳一個沒帶任何值的 body過去!

render status: 200, json: nil
render status: :ok, nothing: true
render status: :ok, body: nil

感謝各位!


#2

基本上來說 … payload / body 沒有就沒有了,對方 lib 預設會吐 empty string 唄 … 如果你們想打架,就架個 wireshark 來看最準了 …

最近開 API 在吵説 header 的類似 x-forwarded-for 之類的大小寫問題( case-sensitive / case-insensitive ),通常這種時候你只要找出 spec 或封包來佐證即可,類似

https://www.ietf.org/rfc/rfc2616.txt

不過你的問題就應該真的是你的錯了 … 你的對象是 Anguler 吃的應該是 JSON,而你的 code 看似正確,但 … 你沒用 JSON 的角度來想(傳輸任何東西,協定請擺在第一位 … )

render status: 200, json: nil
vs
render status: 200, json: nil.to_json

你會懂我的意思的||| 很多時候的『空』並不是指 empty … 類似 UTF8 有超過 18 個 “空白字元” 一樣( space character ) … 每個作用都不同,但都是空白字元,而你只是要符合 JSON 的規則罷了,以上


#3

是用 Rails 嗎?是的話 head :ok 就可以了。
文件傳送門


#4

感謝 JC 與 Noel9999 大大的回覆!

使用 JC大 的建議
angular 那邊已解決,使用 nil.to_json,對方在 body 收到的是 null 值,可以做排除!

Noel9999 大大的 head :ok 先前有使用過,不過對方收到的也是無法做排除的空字串

angular 那邊是這麼說,若 rails 傳過去是空字串,在 底層 parse json 就會報錯(很可能在 rails 這邊是nil 為空,但傳過去的對方判斷的也可能不一樣),不過依JC大的建議 使用 json 帶個 nil,再將 nil 轉成 json,對方就收到了可以識別的值了,因此也可以做出相對應的判斷哩。

以後對面不同的接口可能還會遇到許多這類的問題,先來去看看 wireshark 怎麼使用!!
再次感謝兩位大大!