畢業設計之進銷存管理系統 —— 一步步搭建自己的框架及系統

来源:http://www.cnblogs.com/chiangchou/archive/2017/06/11/project-gpss.html
-Advertisement-
Play Games

大學四年,即將畢業! 大學期間的最後一篇博客,總結分享下我做的畢業設計。我選的論文命題為《燃氣管網設備儀器進銷存管理系統之後臺設計》,由於我們專業只有我一個走技術路線,所以,我一個人完成了整個系統的設計及開發,總耗時近一個月,最終獲得優的成績。 這裡不討論論文,不寫具體實現細節,主要講如何一步步搭建 ...


大學四年,即將畢業!

大學期間的最後一篇博客,總結分享下我做的畢業設計。我選的論文命題為《燃氣管網設備儀器進銷存管理系統之後臺設計》,由於我們專業只有我一個走技術路線,所以,我一個人完成了整個系統的設計及開發,總耗時近一個月,最終獲得優的成績。

這裡不討論論文,不寫具體實現細節,主要講如何一步步搭建自己的系統框架及系統實現,分享下自己的心得,新手可以互相學習,大牛們就當看作本人拋磚引玉啦!!

博客最後會附上系統開發相關的所有文件但不包括畢業論文,本文已大體包含了論文的內容!

 

一、系統展示

1.登錄頁面

  

2.admin登錄後的主頁

  

3.菜單管理

  

4.角色管理>新增角色

  

5.用戶管理

  

6.添加商品

  

7.倉庫管理

  

8.供應商管理

  

9.採購訂單管理

  

10.採購訂單導出

  

11.庫存查看

  

12.採購統計

  

 

二、系統需求分析

  上面簡單的展示了完成後的系統測試截圖,你可以下載war包部署到自己的tomcat上看,下麵開始進入正文。

  開發一個(簡單)系統,我想首要做的就是進行系統需求分析,弄清楚你為什麼要做這個系統,這個系統有哪些功能模塊,每個功能具體實現些什麼功能。

  當然,我這裡的主要目的是完成畢業設計,交出畢業論文。但我並沒有簡單的只是為了完成一個畢業設計而去開發這個系統。主要想法是以開發這套進銷存管理系統為例,詳細說明一個系統從確認需求、技術選型、架構設計、系統實現到測試部署的整個開發過程。綜合運用自己平時所學的知識、技術,及實習獲得的經驗等,去完整且較好的實現一個系統。搭建一個基礎系統框架,形成一定規範,以後在此基礎上做開發,可以省去很多諸如搭建框架、加入依賴、配置等工作。

  這次開發所做的主要工作及意義如下:   

    ①學會站在用戶的角度分析用戶需求,完成需求分析設計等。

    ②熟練使用各種類相關開發、設計工具,及開源軟體。

    ③熟練掌握Spring+SpringMVC+Hibernate+ExtJs的開發技術。

    ④熟練使用maven版本管理工具。

    ⑤站在企業的角度,試著搭建自己的一個底層基礎框架。

    ⑥建立完整的燃氣管進銷存管理系統,進行測試並分析結果。

    ⑦將系統部署到互聯網上,以實現真正的web應用。

1.問題分析

  首先,對系統進行需求分析,首先需要瞭解的就是什麼是進銷存系統,進銷存系統也稱為供應鏈管理系統,最基本的內容就是採購、庫存、銷售、退貨管理。進銷存系統是對企業生產經營中採購、入庫、銷售進行跟蹤管理,從採購單開始,到商品入庫,商品銷售出庫,每一步都跟蹤記錄。有效解決企業的分銷管理等業務問題。那麼燃氣管進銷存系統有何不同呢,其實進銷存系統已經具備了一般商品的進銷存功能,燃氣管就是一種商品。以此為出發點,開始著手設計系統功能模塊。

2.系統模塊結構

  系統分為6大模塊,分別是基礎設置、採購管理、銷售管理、庫存管理、統計分析、系統管理。系統設置的角色有admin、採購員、銷售員、庫存管理員等。

  系統模塊結構(使用xmind設計):

  

3.系統總體流程

  系統的一個整體流程,從初次使用開始,系統設置一個超級管理員(admin),擁有系統的所有許可權。admin登錄系統,設置角色(系統管理員,採購員,銷售員,庫存管理員),分配對應的許可權。然後進入用戶管理,錄入系統用戶。一般管理員登錄系統,錄入基礎數據;採購員需要錄入供應商,採購單,退貨單;銷售員則需錄入銷售單,退貨單。庫存管理員就需要在庫存管理中進行採購審核和銷售審核,採購審核通過則商品入庫,增加庫存;銷售審核通過則商品出庫,減少庫存。管理員還可以查看每月的採購統計和銷售統計。

  系統總體流程(使用visio設計):

  

 

三、開發環境簡介

  需求確定了,就要進入具體的開發階段,首先確定開發這個系統綜合用到哪些技術、開發工具等。

  簡單說下這個系統的開發環境:   

    開發平臺:windows 8.1

    Java版本:jdk 1.8

    項目管理工具:Maven

    開發工具:Intellij IDEA

    資料庫:MySql 5.1

    伺服器:Tomcat 8.5

    開發框架:Spring4 + SpringMVC + Hibernate5

    前端框架:ExtJs 4.2 + Jsp

    建模工具:PowerDesigner、Visio

1.maven

  Maven是Apache軟體基金會組織維護的一款自動化構建工具,專註服務於Java平臺的項目構建和依賴管理。它提供了中央倉庫,能幫我們自動下載構件和第三方的開源類庫。你只需要在你的項目中以坐標的方式依賴一個jar包,maven就會自動從中央倉庫下載,並同時下載這個jar包所依賴的其他jar包,以及可以下載源碼進行閱讀。使用maven後每個jar包本身只在本地倉庫中保存一份,極大的節約了存儲空間,讓項目更輕巧,更避免了重覆文件太多而造成的混亂。同時maven可以替我們自動的將當前jar包所依賴的其他所有jar包全部導入進來,無需人工參與,節約了大量的時間和精力。使用maven,只需要一條簡單的命令,就可以自動完成清理、編譯、測試、打包、部署的整個過程。我們的項目一般會分為開發環境和生產環境,不同環境對應不同的配置文件,使用maven,你就可以配置兩個環境,打包的時候指定運行的環境,就可以將對應的配置文件替換,以此減少手工操作及可能帶來的失誤操作等。

2.Intellij IDEA

  IDEA是java語言開發的集成環境,Intellij被公認為最好的Java開發工具之一。IDEA在代碼自動提示、重構、調試、各類版本工具(maven、svn等)整合等方面都是比較強的。本人是在實習期間轉用idea開發的,之前一直使用eclipse,相比eclipse,idea在調試、代碼自動提示等方面更顯優勢。項目在idea中有一個更友好的目錄結構,尤其是多工程項目。當然,eclipse比idea更容易上手,使用idea可以提高你的開發速度,但前提是你需要記住大量的快捷鍵。使用idea的調試功能,比如,你只需要按快捷鍵Alt+F8,然後輸入表達式,就可以快速求值;在調試的時候,idea會在變數的後面以不同的顏色顯示變數的值,你就可以很清楚的知道調試的每一步,非常方便。使用好IDEA能在很大程度上提高我們的開發速度。

3.ExtJs

  ExtJs可以用來開發富客戶端的ajax應用,是用javascript寫的與後臺技術無關的前端ajax框架,主要用於創建前端用戶界面,擁有強大的數據處理功能,以及圖表統計等。同時,ExtJs擁有很多個性化的主題供你選擇,是開發後臺管理系統的一個不錯的選擇。

 

四、底層架構設計

  在進行進銷存系統的設計和編碼之前,首先設計一個自己的底層框架,這個底層框架在之後可以作為其它具體項目開發的一個基礎,從而不必每次開發項目時,都去做很多重覆的工作。這個底層框架主要包括一個開發的規範,以及一些通用的工具類等,更重要的是分類別引入各個框架,如Spring、Hibernate、各個配置文件等。同時,如果以後在開發中,增加的一些新功能,還可以往這個底層中添加,不斷的去完善。

1.規範

  在進行框架設計之前,為了使軟體開發過程順暢、提高代碼的可靠性,可讀性和可維護性等,首先需要確定的就是開發規範了,俗話說,沒有規矩不成方圓,軟體開發亦是如此。下麵列出一些簡單的需要遵守的規範。

  1.1基礎規範

  首先需要遵守的是一些基礎規範。一般來說,公司會將功能變數名稱作為所有命名的一個基礎,比如文件名、包名等等。因此我申請了一個功能變數名稱[www.lyyzoo.com]作為個人功能變數名稱。然後將D:/lyyzoo-repo作為開發的根目錄,即個人代碼倉庫,以後所有的項目都會建到這個目錄下。所有的項目開發使用maven來管理項目,因此目錄結構是標準的maven規範目錄。

  maven約定的目錄結構:

  

  1.2代碼規範

  ①命名  

    > 所有的命名需要見名之意,儘量保證通過變數名得知變數的含義,需要註釋的地方儘量添加註釋。

    > 包命名全小寫,通過功能變數名稱倒寫+模塊的形式,如:com.lyyzoo.service

    > 類命名採用Pascal名法,大寫字母開頭,每個單詞首字母大寫。

    > 方法名採用Camel命名法,小寫字母開頭,每個單詞首字母小寫;getter和setter使用Lombok自動生成,只需添加@Data註解即可。

    > 變數名採用Camel命名法,小寫字母開頭,每個單詞首字母大寫。變數名不宜過長,可採用首字母縮寫的形式,但要見名之意。

    > 常量名全大寫,每個單詞之間使用”_”分隔。

  ②分層

    項目以功能模塊劃分,不同項目建立不同的工程,使用maven的依賴進行管理。包的基本分層有controller(控制層)、service(業務層)、dao(數據訪問層)、entity(模型層)。

2.架構設計

  2.1模塊結構

  整個項目的底層著重是一些通用的、基礎的東西,整合到一起,以便於以後重用。首先,創建一個名為lyyzoo的maven工程,lyyzoo將作為底層的根目錄。lyyzoo下有兩個主要的子模塊,分別為lyyzoo-base和lyyzoo-starter,lyyzoo-base是基礎模塊,用於一些簡單的Java及JavaEE程式;lyyzoo-starter則是JavaEE相關,會依賴於lyyzoo-base,同時引入了Spring、Hibernate等第三方框架。然後在各個模塊中添加具體的子模塊。以後開發中需要用到哪個模塊,在依賴中添加那個模塊即可。

  底層模塊結構圖:

  

  以下是各個POM之間的關係:

  ① lyyzoo > pom.xml

  

  ② lyyzoo-base > pom.xml

  

  ③ lyyzoo-starter > pom.xml

  

  2.2依賴管理

  結構建好後,就需要進行一些詳細的依賴配置工作了,lyyzoo是所有模塊的父類,所以在lyyzoo中需要添加公用的屬性、依賴管理、maven插件等。

  首先將所有的版本號提出來,放到<properties></properties>里,這樣一旦需要切換到另一個版本時,就可以只改個版本號就達到目的了。其中列出了一些屬性如下:包括底層的版本、Java版本、Spring、Hibernate的版本等等。

 1 <properties>
 2   <!-- Global -->
 3   <lyyzoo.version>1.0-SNAPSHOT</lyyzoo.version>
 4   <java.version>1.8</java.version>
 5   <maven.compiler.source>${java.version}</maven.compiler.source>
 6   <maven.compiler.target>${java.version}</maven.compiler.target>
 7   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 8   <!-- lombok -->
 9   <lombok.version>1.16.14</lombok.version>
10   <!-- log -->
11   <slf4j.version>1.7.7</slf4j.version>
12   <logback.version>1.1.3</logback.version>
13   <!-- jdbc -->
14   <mysql.version>5.1.38</mysql.version>
15   <!-- http://mvnrepository.com/artifact/com.mchange/c3p0/ -->
16   <c3p0.version>0.9.5.2</c3p0.version>
17   <!-- test -->
18   <junit.version>4.12</junit.version>
19   <!-- servlet -->
20   <servlet.version>3.1.0</servlet.version>
21   <!-- spring -->
22   <spring.version>4.2.6.RELEASE</spring.version>
23   <aspectjrt.version>1.7.3</aspectjrt.version>
24   <aspectjweaver.version>1.7.3</aspectjweaver.version>
25   <!-- hibernate -->
26   <hibernate.version>5.0.1.Final</hibernate.version>
27   <hibernate.jpa.version>1.0.0.Final</hibernate.jpa.version>
28 </properties>
View Code

  接著,引入依賴管理,在lyyzoo中引入其它項目將會用到的所有三方jar包的依賴,所有的依賴都添加到<dependencyManagement><dependencies></dependencies></dependencyManagement>中,這樣就可以方便的管理所有的jar包了。下麵列出引入的一部分jar包,其它的可參考源碼。

  ① 首先需要引入lyyzoo下的其它模塊,如lyyzoo-base-core、lyyzoo-starter-base等模塊。

 1 <!-- lyyzoo -->
 2 <dependency>
 3   <groupId>com.lyyzoo</groupId>
 4   <artifactId>lyyzoo-base-core</artifactId>
 5   <version>${lyyzoo.version}</version>
 6 </dependency>
 7 <dependency>
 8   <groupId>com.lyyzoo</groupId>
 9   <artifactId>lyyzoo-base-data</artifactId>
10   <version>${lyyzoo.version}</version>
11 </dependency>
12 <dependency>
13   <groupId>com.lyyzoo</groupId>
14   <artifactId>lyyzoo-starter-base</artifactId>
15   <version>${lyyzoo.version}</version>
16 </dependency>
17 <dependency>
18   <groupId>com.lyyzoo</groupId>
19   <artifactId>lyyzoo-starter-jpa</artifactId>
20   <version>${lyyzoo.version}</version>
21 </dependency>
View Code

  ② JDBC相關,相關jar包有c3p0,用於作資料庫連接池;mysql驅動包;dbutils,對JDBC進行了簡單的封裝,使用起來簡單方便。

 1 <!-- jdbc -->
 2 <dependency>
 3   <groupId>com.mchange</groupId>
 4   <artifactId>c3p0</artifactId>
 5   <version>${c3p0.version}</version>
 6 </dependency>
 7 <dependency>
 8   <groupId>mysql</groupId>
 9   <artifactId>mysql-connector-java</artifactId>
10   <version>${mysql.version}</version>
11 </dependency>
12 <dependency>
13   <groupId>commons-dbutils</groupId>
14   <artifactId>commons-dbutils</artifactId>
15   <version>1.5</version>
16 </dependency>
View Code

  ③ 日誌相關:

 1 <!-- log -->
 2 <dependency>
 3   <groupId>org.slf4j</groupId>
 4   <artifactId>slf4j-api</artifactId>
 5   <version>${slf4j.version}</version>
 6 </dependency>
 7 <dependency>
 8   <groupId>ch.qos.logback</groupId>
 9   <artifactId>logback-classic</artifactId>
10   <version>${logback.version}</version>
11 </dependency>
12 <!-- slf4j -->
13 <dependency>
14   <groupId>org.slf4j</groupId>
15   <artifactId>log4j-over-slf4j</artifactId>
16   <version>${slf4j.version}</version>
17 </dependency>
View Code

  ④ spring相關,包括了spring aop、spring mvc等。

 1 <!-- springframework -->
 2 <dependency>
 3   <groupId>org.springframework</groupId>
 4   <artifactId>spring-aop</artifactId>
 5   <version>${spring.version}</version>
 6 </dependency>
 7 <dependency>
 8   <groupId>org.springframework</groupId>
 9   <artifactId>spring-aspects</artifactId>
10   <version>${spring.version}</version>
11 </dependency>
12 <dependency>
13   <groupId>org.springframework</groupId>
14   <artifactId>spring-beans</artifactId>
15   <version>${spring.version}</version>
16 </dependency>
17 <dependency>
18   <groupId>org.springframework</groupId>
19   <artifactId>spring-context</artifactId>
20   <version>${spring.version}</version>
21 </dependency>
22 <dependency>
23   <groupId>org.springframework</groupId>
24   <artifactId>spring-context-support</artifactId>
25   <version>${spring.version}</version>
26 </dependency>
27 <dependency>
28   <groupId>org.springframework</groupId>
29   <artifactId>spring-core</artifactId>
30   <version>${spring.version}</version>
31 </dependency>
32 <dependency>
33   <groupId>org.springframework</groupId>
34   <artifactId>spring-jdbc</artifactId>
35   <version>${spring.version}</version>
36 </dependency>
37 <dependency>
38   <groupId>org.springframework</groupId>
39   <artifactId>spring-jms</artifactId>
40   <version>${spring.version}</version>
41 </dependency>
42 <dependency>
43   <groupId>org.springframework</groupId>
44   <artifactId>spring-orm</artifactId>
45   <version>${spring.version}</version>
46 </dependency>
47 <dependency>
48   <groupId>org.springframework</groupId>
49   <artifactId>spring-tx</artifactId>
50   <version>${spring.version}</version>
51 </dependency>
52 <dependency>
53   <groupId>org.springframework</groupId>
54   <artifactId>spring-web</artifactId>
55   <version>${spring.version}</version>
56 </dependency>
57 <dependency>
58   <groupId>org.springframework</groupId>
59   <artifactId>spring-webmvc</artifactId>
60   <version>${spring.version}</version>
61 </dependency>
View Code

  ⑤ hibernate相關:

 1 <dependency>
 2   <groupId>org.hibernate</groupId>
 3   <artifactId>hibernate-c3p0</artifactId>
 4   <version>${hibernate.version}</version>
 5 </dependency>
 6 <dependency>
 7   <groupId>org.hibernate.common</groupId>
 8   <artifactId>hibernate-commons-annotations</artifactId>
 9   <version>${hibernate.version}</version>
10 </dependency>
11 <dependency>
12   <groupId>org.hibernate</groupId>
13   <artifactId>hibernate-core</artifactId>
14   <version>${hibernate.version}</version>
15 </dependency>
16 <dependency>
17   <groupId>org.hibernate</groupId>
18   <artifactId>hibernate-entitymanager</artifactId>
19   <version>${hibernate.version}</version>
20 </dependency>
View Code

 

  所有的依賴添加好後,就需要為各個子模塊添加具體的依賴了,根據每個子模塊的功能,添加相關的依賴,而不是將所有的依賴一次性加入。這樣我們就可以根據自己開發的項目的需要,添加模塊依賴,而不是一次性加入所有jar包,避免冗餘,增大項目的體積。下麵以lyyzoo-base-data和lyyzoo-starter-jpa為例說明。

  lyyzoo-base-data模塊是基礎數據相關,主要與資料庫打交道,那麼就需要引入mysql驅動、資料庫連接池c3p0等,pom.xml如下:

 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 2          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 3     <modelVersion>4.0.0</modelVersion>
 4     <parent>
 5         <groupId>com.lyyzoo</groupId>
 6         <artifactId>lyyzoo-base</artifactId>
 7         <version>1.0-SNAPSHOT</version>
 8     </parent>
 9     <artifactId>lyyzoo-base-data</artifactId>
	   

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 設計模式既上一篇關於單例模式後,終於要接著寫下去了,先來個最簡單的,簡單工廠模式,這個設計模式很簡單,也是最常用的(是不是好多東西都這樣,越簡單,門檻越低,越討人喜歡)。 概念(原諒我無恥的抄百度百科): 簡單工廠模式是屬於創建型模式,又叫做靜態工廠方法(Static Factory Method) ...
  • 一、動態代理概念 動態代理分為JDK動態代理和cglib動態代理兩種方式。 jdk動態代理是由Java內部的反射機制來實現的,cglib動態代理底層則是藉助asm來實現的。 總的來說,反射機制在生成類的過程中比較高效,而asm在生成類之後的相關執行過程中比較高效(可以通過將asm生成的類進行緩存,這 ...
  • 一、join()方法,官方描述 waits for this thread to die 等待當前線程死亡; 源碼: //無參,預設調用join(0) public final void join() throws InterruptedException { join(0); } //傳入兩時間m ...
  • MyBatis插件原理 從<plugins>解析開始 本文分析一下MyBatis的插件實現原理,在此之前,如果對MyBatis插件不是很熟悉的朋友,可參看此文MyBatis7:MyBatis插件及示例 列印每條SQL語句及其執行時間,本文我以一個例子說明瞭MyBatis插件是什麼以及如何實現。由於M ...
  • 首先,集群數需要基數,這裡搭建一個簡單的redis集群(6個redis實例進行集群)。 ...
  • 轉載請註明出處:http://www.cnblogs.com/Joanna-Yan/p/6973266.html 前面講到:Spring+SpringMVC+MyBatis深入學習及搭建(九)——MyBatis和Spring整合 使用官方網站的mapper自動生成工具mybatis-generato ...
  • python中函數參數有:預設參數、關鍵字參數、非關鍵字可變長參數(元組)、關鍵字可變長參數(字典) ...
  • python numpy csv文件的寫入和存取 寫入csv文件 CSV (Comma‐Separated Value, 逗號分隔值),是一種常見的文件格式,用來存儲批量數據。 寫入csv文件 示例: 得到的文件是這樣的 改變參數,以浮點數寫入 讀取csv文件 讀取csv文件 示例: CSV只能有效 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...