當有一個問題可以從 App 也可以從 Server 解決的時候,究竟要交給誰解決呢?
這個問題從來沒有標準答案。
而這個問題今天也發生了。
老姐卡在刪除題目成功後 Server response 沒有內容。
現行寫法的 deleteTopic 預期回傳的是 Unit 不是 null。
@DELETE("/api/topics/{id}")
suspend fun deleteTopic(@Path("id") id: String)
「可不可以改成回傳空物件 {}
?」老姐淚連連的看著我,她這個問題從昨天卡到今天,晚餐也食不知味。
「可是 HttpStatusCode 204 就是 NoContent 呀。本來就不該回傳 body 。」如果是已經上架的產品,我會選擇改成 HttpStatusCode 200 加上她說的空物件,因為 App 審核要花個三四天,即時性差。
還沒上架的時候,誰沒道理就誰改,或是誰有空就誰改,很自由的。
「卡住的時候先搜尋看看 stackoverflow !」雖然不想改 Server 的程式碼,但是幫忙查 App 的解法還是可以的。
她用的是 Retrofit Library ,為此還提高了 minSdkVersion 。
https://github.com/square/retrofit
果然這次也順利度過此劫。
@DELETE("/api/topics/{id}")
suspend fun deleteTopic(@Path("id") id: String): Response<Unit>
偶爾有遇過 stackoverflow 上面提供的方法也不能解決,這時候就真的要靠自己,一旦我們解出之後也反饋給發題者,網路上的大家互助合作,節省很多時間。
解決完 App 的問題之後,老姐一邊開開心心的啃巧克力棒,一邊給我測試回饋。
「這幾個 Api 沒有問題,但是需要加上權限管理,因為呀,」老姐咬斷巧克力棒後繼續說下去:「現在所有人都可以刪除題目。」
「我知道,所以會員功能要提上日程了。」
天啊,會員功能
、聊天室功能
、推播功能
、付費功能
、壓力測試
、雲端費用評估
這一堆都是 Server 的工作,深感任重而道遠。
如果未來有演算法工程師可以幫忙推薦使用者他們有興趣的題目就好了。
⋯⋯停住,夢還是睡著時再做,現在還是去搶巧克力棒吧。
本次鐵人賽的作品在放進更多內容後已經成書,書名是《老姐要用Kotlin寫專案:從 Server 到 Android APP 的開發生存日記》,歡迎購買唷。https://www.tenlong.com.tw/products/9789864348978