團隊項目技術規格說明書

技術規格說明書

一、前端框架

小程序是如今比較熱門的一種移動端應用形式,跨平臺且用戶使用十分便利。爲此咱們選擇將咱們的應用開發在小程序上。小程序的前端框架咱們選擇了騰訊的wepy前端框架,該框架支持 npm 包,支持 css 預處理器,並且組件美觀且有完整的指導文檔,便於咱們學習以及完成咱們的開發任務。php

二、後端框架

關於後端框架的選擇,咱們調研了基於python 的Django,Flask 框架,以及基於php 的ThinkPHP,基於java的JSP。最終咱們選擇了基於python語言的Django框架。願意以下:css

  • Django封裝較好,學習成本較低,而且功能齊全。咱們組開發後端的人員中有的同窗徹底沒有相關的開發經驗,選擇Django有助於他們快速上手,並完成咱們的開發任務。
  • 具備較強的數據庫訪問組件。咱們能夠方便的對數據庫進行操做即便沒有SQL語言的基礎。
  • admin interface. Django 擁有一個完整的後臺管理界面。可視化界面簡化了咱們對後臺數據的管理。
  • Django 目前的文檔已經至關完善,也易於咱們學習。

三、前端技術

做爲手機APP,頁面是用戶直接接觸到的主要部分,也是前端的主要部分。合理的頁面佈局設計與頁面跳轉關係是確保用戶體驗的必要條件。前端

頁面轉換關係

頁面的轉換關係以下圖,其中,矩形框表示具體頁面,連線表示頁面的跳轉,線上文字表示觸發跳轉的用戶動做。用戶按下返回按鍵時,返回當前頁面的上一級頁面。當前頁面上一級有多個頁面時,由哪一個頁面進入當前頁面,則返回哪一個頁面。java

頁面佈局設計

頁面佈局設計在功能規格說明書中有詳細示意圖,此處再也不重複。設計的主要原則是儘可能清晰簡明的將該頁面中的主要信息傳達給用戶。python

四、數據庫結構規格

  • 數據庫中須要存儲用戶數據、用戶我的信息、帖子、申請4個實體,實體之間存在聯繫,實體也包含屬性。聯繫、屬性以下圖所示:

五、接口規範

前端

  • 歡迎和登錄頁面 /index
  • 註冊頁面/register
  • 帖子總覽頁面/f
  • 帖子詳情/p/<post_id>
  • 帖子收到的申請/p/<post_id>/apply
  • 個人帖子 /my/<ID>/post
  • 個人申請/my/<ID>/apply
  • 發佈帖子c/post

後端

post 請求

/login
  • parameter數據庫

    {
        "account":"string", // 惟一,英文字母和數字,長度不超過14,以英文開頭
        "password":"string"  // 數字大小寫字母,標點符號,8~14個字符
    }
  • returnnpm

    {
        "ret":"bool", //是否登陸成功
        "ID":"string" // 用戶的惟一ID
    }
/register
  • parameterjson

    {
        "account":"string", // 惟一,英文字母和數字,長度不超過14,以英文開頭
        "password":"string",  // 數字大小寫字母,標點符號,8~14個字符
        "name":"string", //真實姓名
        "age":"int", 
        "studentID":"string",
        "sex":"string", 
        "major":"string",
        "grade":"string"
    }
  • return小程序

    {
        "ret":"bool", //是否註冊成功
        "ID":"string" // 用戶的惟一ID
    }
c/post
  • parameter後端

    {
          "title":"string",
          "postDetail":"string",
          "requestNum":"int",
          "ddl":"datetime", //YYYY-MM-DD
          "posterID":"string",
      }
  • return

    {
        "ret":"bool", //是否發佈成功
        "postID":"string" // 帖子ID
    }

get請求

/f
  • return

    [
        {
            "title":"string",
            "postDetail":"string",
            "requestNum":"int",
            "acceptedNum":"int",
            "ddl":"datetime", //YYYY-MM-DD
            "ifEnd":"bool",
            "postID":"string",
            "posterID":"string",
      },
        ...
    ]
/p/
  • return

    {
          "title":"string",
          "postDetail":"string",
          "requestNum":"int",
          "acceptedNum":"int",
          "ddl":"datetime", //YYYY-MM-DD
          "ifEnd":"bool",
          "postID":"string",
          "posterID":"string",
      }
/p/ /apply
  • return

    [
         {
          "applyID":"string",
          "resume":"file",
          "applyStatus":"string", //接受,待定,結束
          "applicantID":"string",
      },
         ...
     ]
/my/<ID>/post
  • return

    [
        {
            "title":"string",
            "postDetail":"string",
            "requestNum":"int",
            "acceptedNum":"int",
            "ddl":"datetime", //YYYY-MM-DD
            "ifEnd":"bool",
            "postID":"string",
            "posterID":"string",
      },
        ...
    ]
/my/<ID>/apply
  • return

    [
         {
          "applyID":"string",
          "resume":"file",
          "applyStatus":"string", //接受,待定,結束
          "applicantID":"string",
      },
         ...
     ]

六、錯誤處理

咱們定義錯誤處理類,對錯誤進行分類彙總,集中處理,目前暫時分爲以下幾大類,具體的細化會在開發的時候逐漸擴充。

  • InvalidInputError: 處理不合理的輸入,好比用戶名,密碼中的不合理的字符以及發佈需求的時候,填入不合法的人數,截至日期等等。
  • DataOverflowError: 防止用戶輸入大量的數據致使程序崩潰,限制用戶的輸入的長度而且拋出異常。
  • FrequentRefreshError: 用戶若是過於頻發刷新,拋出異常並在必定時間內禁止刷新,防止app崩潰

七、應對變化的靈活性

咱們將功能抽象成獨立的接口,前端UI操做與後端響應函數與數據管理十分獨立,程序每一個頁面之間的實現也互相獨立,程序具備良好的擴展性以及應對變化的能力。

八、抗壓能力

擁有較好的異常處理機制防止程序崩潰,對於模擬大量用戶同時操做的壓力測試目前尚未作。

相關文章
相關標籤/搜索