簡體   English   中英

哪種架構在Web服務API設計中更好

[英]Which schema is better in web service API design

最近,我們的團隊將為我們現有的網站開發移動(iphone,android平台)應用程序,讓用戶可以使用該應用程序通過應用程序更容易閱讀我們的內容。

但是我們的團隊在API返回的JSON模式中有不同的視圖,下面是示例響應。

架構類型1:

{
"success": 1,
"response": {
    "threads": [
        {
            "thread_id": 9999,
            "title": "Topic haha",
            "content": "blah blah blah",
            "category": {
                "category_id": 100,
                "category_name": "Chat Room",
                "category_permalink": "http://sample.com/category/100"
            },
            "user": {
                "user_id": 1,
                "name": "Hello World",
                "email": "helloworld@hello.com",
                "user_permalink": "http://sample.com/user/Hello_World"
            },
            "post_ts": "2012-12-01 18:16:00T0800"
        },
        {
            "thread_id": 9998,
            "title": "asdasdsad ",
            "content": "dsfdsfdsfds dsfdsf ds",
            "category": {
                "category_id": 101,
                "category_name": "Chat Room 2",
                "category_permalink": "http://sample.com/category/101"
            },
            "user": {
                "user_id": 2,
                "name": "Hello baby",
                "email": "hellobaby@hello.com",
                "user_permalink": "http://sample.com/user/2"
            },
            "post_ts": "2012-12-01 18:15:00T0800"
        }
    ]
}
}

架構類型2:

{
"success": 1,
"response": {
    "threads": [
        {
            "thread_id": 9999,
            "title": "Topic haha",
            "content": "blah blah blah",
            "category": 100,
            "user": 1,
            "post_ts": "2012-12-01 18:16:00T0800"
        },
        {
            "thread_id": 9998,
            "title": "asdasdsad ",
            "content": "dsfdsfdsfds dsfdsf ds",
            "category": 101,
            "user": 2,
            "post_ts": "2012-12-01 18:15:00T0800"
        }
    ],
    "category": [
        {
            "category_id": 100,
            "category_name": "Chat Room",
            "category_permalink": "http://sample.com/category/100"
        },
        {
            "category_id": 101,
            "category_name": "Chat Room 2",
            "category_permalink": "http://sample.com/category/101"
        }
    ],
    "user": [
        {
            "user_id": 1,
            "name": "Hello World",
            "email": "helloworld@hello.com",
            "user_permalink": "http://sample.com/user/Hello_World"
        },
        {
            "user_id": 2,
            "name": "Hello baby",
            "email": "hellobaby@hello.com",
            "user_permalink": "http://sample.com/user/Hello_baby"
        }
    ]
}
}

一些開發人員聲稱如果使用模式類型2,

  • 如果類別和用戶實體過多重復,則可以減少數據大小。 它確實減少了至少20~40%的響應純文本大小。
  • 一旦數據大小變小,在將其解析為JSON對象時,內存就會減少
  • categoey&user可以存儲在哈希映射中,易於重用
  • 減少檢索數據的開銷

我不知道架構類型2是否確實增強了。 因為我讀了這么多API文檔,所以從未見過這種類型的架構設計。 對我來說,它看起來像一個關系數據庫。 所以我幾乎沒有問題,因為我沒有設計Web服務API的經驗。

  • 它是否符合API設計原則(易於閱讀,易於使用)?
  • 在IOS / Android平台上解析時,它真的變得更快並獲得更少的內存資源嗎?
  • 它是否可以減少客戶端和服務器之間的開銷?

謝謝。

當我為android做這樣的應用程序時,我只解析一個JSON並將其放入數據庫。 后來我使用ContentProvider來訪問它。 在您的情況下您可以使用第二個架構,但沒有用戶,類別部分。 使用延遲加載,但它將是一個很好的解決方案,以防類別和用戶經常重復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM