首頁 >後端開發 >php教程 >介面書寫問題

介面書寫問題

WBOY
WBOY原創
2016-12-01 00:25:191320瀏覽

我的介面是這樣子的,有回傳的時候,json裡面的data才會有值,不然就會是一個空字串
介面書寫問題

介面書寫問題

同事跟我說,他接收的時候,data是用json轉成物件去取,然後如果data是空,他整個程式就爆掉了,要嘛我data回傳null,不能回傳空。我就搞不懂真的是這樣子嗎
介面書寫問題

回覆內容:

我的介面是這樣子的,有回傳的時候,json裡面的data才會有值,不然就會是一個空字串
介面書寫問題

介面書寫問題

同事跟我說,他接收的時候,data是用json轉成物件去取,然後如果data是空,他整個程式就爆掉了,要嘛我data回傳null,不能回傳空。我就搞不懂真的是這樣子嗎
介面書寫問題

確實是這樣你原本的data是個對象,這裡變成了數組他沒做處理就會掛掉,你可以$info['data'] = new stdClass();//返回空對象
作為一個服務端我覺得應該對欄位類型敏感處理。

難道不用判斷code值的嗎?

你同事是不是用了框架去解析的json,讓他手動解析一遍就好了。不要用框架。
不然框架不能判斷data裡面的[]這個是個空物件。
當然也可以在解析前判斷code的值。

如果客戶端程式碼寫的不好的話,確實會這樣。這鍋甩給你了,要是你比他牛,你就甩回去;不然的話,接鍋吧。 。 。

一般客戶端都會使用類似gson的框架去解析服務端回傳的json數據,而數據格式是需要事先定義的。 data既然是一個對象,那你就用對象的預設值null,我覺得這個需求也蠻正常的。

我覺得這個就是,看誰好改 就誰改的問題啊 ~~
我覺得你說的也有道理,一般我同事他怎麼給我方便返,我就怎麼取。然後自己在做處理。
當然,具體問題具體分析吧~~

我覺得判斷code的值比較好

作為API, 相同欄位應該傳回相同資料型別。
但是如果解決問題的話,使用code 也可以。
所以,如果在開發中就改接口,如果已經上線了,還是改接口。

所以需要介面聯調

你同事說的沒問題,要確保每個欄位的資料型別始終一致,畢竟他們是強型別,哈哈

app端寫的不夠嚴謹,先判斷狀態碼code,成功則繼續解析data,不成功,回傳錯誤碼code,不進行解析,
服務端因為php弱型,app端對每個資料的型別都有要求,即強類型,盡量確保返回資料類型的一致性,data不為空的時候,返回的json字串,app端解析為對象,data為空的時候,服務端判斷是否為空,為空則賦值一個空物件

<code>$obj = new stdClass();</code>

php端幹嘛不先定義變數呢? ? $data=array()
另外客戶端不管怎麼樣都要進行保證不閃退,,我建議你在開發過程中,模擬一些錯誤返回值給客戶端看看客戶端會不會閃退,然後讓他背黑鍋哈哈,開玩笑了

<code class="php">$result = array(
    "code" => "2",
    "msg" => "",
    "data" => (Object)array()
);</code>

別直接寫

<code class="php">$result = array(
    "code" => "2",
    "msg" => "",
    "data" => array()
);</code>
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn