2017-06-02 71 views
0

正確的反應我們有以下響應客戶端的格式,如果請求成功:的Web API - 客戶

{ 
    "ExitCode": 1, 
    "ErrorMessage": "", 
    "NumberOfGreenBoxMatches": 4, 
    "NumberOfPinkBoxExtractFrames": 5, 
    "ProcessingTime": 4000, 
    「HasOverlay」: false; 
    "MatchResult": "...." 
} 

如果一個客戶請求是壞的或內部錯誤發生客戶提出返回如下:

{ 
    "ExitCode": -10, 
    "ErrorMessage": "Internal error parsing pink boxes. Please contact tech support", 
    "NumberOfGreenBoxMatches": 0, 
    "NumberOfPinkBoxExtractFrames": 0, 
    "ProcessingTime": 1240, 
    「HasOverlay」: false; 
    "MatchResult": "" 
} 

是不是正確的做法(返回類似的json)?我的意見不是,我們應該只返回像

{ "ErrorMessage": "Internal error parsing pink boxes. Please contact tech support" } 

和正確的HttpCode。什麼是正確的方法?

回答

2

有關正確方法的建議看起來更符合HTTP標準。因爲ExitCode看起來像HTTP響應代碼功能重複。

但我認爲最終的解決方案高度依賴於客戶端架構。有一些問題需要考慮:

  • 客戶端是否解析HTTP代碼?
  • 客戶端如何驗證服務器響應?
  • 服務器錯誤響應必須是JSON模式與常規響應兼容嗎?
  • 客戶端是否必須始終接受字段中的值一樣ProcessingTime
+0

如何以這種方式實現多語言? –

+0

@OlegSh你應該在客戶端實現'Accept-Language:'頭部。您可以在申請多語言錯誤消息時使用該頭文件。 –

+0

好吧,用多國語言我同意。但是在很多情況下需要額外的「退出代碼」。即用戶沒有選擇圖像,應用程序應該顯示它的特殊形式... –

-1

使用Model收到來自網絡API的結果,在這裏,在客戶端使用的型號是

public class MyResult 
{ 
    public int ExitCode { get; set; } 
    public string ErrorMessage { get; set; } 
    public int NumberOfGreenBoxMatches { get; set; } 
    public int NumberOfPinkBoxExtractFrames { get; set; } 
    public int ProcessingTime { get; set; } 
    public bool HasOverlay { get; set; } 
    public string MatchResult { get; set; } 
} 

,如果你在發生錯誤時發送不同的結果,它具有單一屬性「ErrorMessage」,它們不能在客戶端處理它。

因此,您最好根據客戶提出的確切型號提供信息。

+0

狀態代碼表示客戶端他不應該將其作爲標準響應來處理 –

+0

他們可以根據其中的信息管理響應,例如:正如您在Q中指出的,退出代碼:-10。他們可以基於此處理結果並顯示錯誤消息。 – Vijayaraghavan

+0

它們可以,但是HTTP需要返回正確的狀態碼 –