詳解接口的常見請求方式

詳解接口的常見請求方式

  • 一、 常見接口請求方式
    • 1. GET
    • 2. POST
    • 3. PUT
    • 4. DELETE
    • 5. PATCH
    • 6. HEAD
    • 7. OPTIONS
  • 二、 實現方法
    • 1. 前端實現
    • 2. 后端實現
  • 三、 作用與主要區別
  • 四、 舉例講解
    • 1. 創建 Spring Boot 工程
    • 2. 添加依賴
    • 3. 編寫 Controller 實現接口
      • 關鍵點說明
    • 4. 啟動與測試
    • 5. 總結
  • 總結

在 Web 開發中,接口請求方式(也稱 HTTP 方法)是客戶端與服務器交互的重要手段,不同的方法代表了不同的操作意圖。


一、 常見接口請求方式

1. GET

  • 作用:用于獲取資源或數據,不對服務器數據進行修改。
  • 實現方法:前端通過 AJAX、Fetch API、Axios 等發起 GET 請求,參數一般拼接在 URL 后面。
  • 特點及區別
    • 參數在 URL 中傳遞,數據量有限且不適合傳輸敏感信息。
    • 是一種冪等操作,重復請求返回相同數據。

2. POST

  • 作用:用于向服務器提交數據或創建新資源。
  • 實現方法:通過 Fetch API、Axios 等發送 POST 請求,將數據放在請求體中傳輸。
  • 特點及區別
    • 可以傳輸大量數據,且數據在請求體內相對安全。
    • 非冪等操作,重復請求可能導致數據重復創建。

3. PUT

  • 作用:用于更新或替換整個資源。
  • 實現方法:客戶端發送 PUT 請求時,需提供完整的資源數據,后端接收到請求后對資源進行完整替換。
  • 特點及區別
    • 操作冪等:多次請求的結果與一次請求相同。
    • 適用于需要全量更新的場景。

4. DELETE

  • 作用:用于刪除服務器上的資源。
  • 實現方法:前端發起 DELETE 請求,通過 URL 指定需要刪除的資源標識。
  • 特點及區別
    • 同樣為冪等操作,刪除不存在的資源通常返回成功狀態或特定錯誤提示。
    • 應謹慎使用,確保用戶操作的安全性。

5. PATCH

  • 作用:用于對資源進行部分更新。
  • 實現方法:發送 PATCH 請求時,只傳遞需要修改的字段或部分數據。
  • 特點及區別
    • 與 PUT 相比,PATCH 不要求提供完整的資源數據,適用于局部修改。
    • 操作可能不完全冪等,需根據具體實現確認。

6. HEAD

  • 作用:與 GET 類似,但只返回響應頭信息,不返回響應體。
  • 實現方法:發送 HEAD 請求,通常用于檢查資源是否存在或獲取資源元數據。
  • 特點及區別
    • 數據傳輸量較小,適合用于檢測資源更新或緩存驗證。
    • 不返回具體數據內容。

7. OPTIONS

  • 作用:用于獲取服務器支持的 HTTP 請求方法列表,常用于跨域請求的預檢(CORS)。
  • 實現方法:瀏覽器在實際跨域請求前自動發起 OPTIONS 請求,服務器返回允許的方法列表。
  • 特點及區別
    • 主要用于安全策略確認,不涉及具體業務數據。
    • 幫助客戶端決定是否可以安全地發起實際請求。

二、 實現方法

1. 前端實現

  • 使用原生 API:
    例如使用 JavaScript 的 Fetch API:

    // GET 請求示例
    fetch('https://api.example.com/data', {method: 'GET'
    }).then(response => response.json()).then(data => console.log(data));// POST 請求示例
    fetch('https://api.example.com/data', {method: 'POST',headers: {'Content-Type': 'application/json'},body: JSON.stringify({ key: 'value' })
    }).then(response => response.json()).then(data => console.log(data));
    
  • 使用第三方庫:
    如 Axios 或 jQuery.ajax,可以進一步封裝請求邏輯:

    // Axios GET 請求
    axios.get('https://api.example.com/data').then(response => console.log(response.data));// Axios POST 請求
    axios.post('https://api.example.com/data', { key: 'value' }).then(response => console.log(response.data));
    

2. 后端實現

  • 服務器框架支持:
    大多數后端框架(如 Express、Spring Boot、Django 等)都提供對不同 HTTP 方法的路由支持。例如在 Express 中:
    // Express 路由示例
    const express = require('express');
    const app = express();app.get('/data', (req, res) => {// 處理 GET 請求,返回數據res.json({ message: 'GET 請求成功' });
    });app.post('/data', (req, res) => {// 處理 POST 請求,創建資源res.json({ message: 'POST 請求成功' });
    });app.put('/data/:id', (req, res) => {// 處理 PUT 請求,替換資源res.json({ message: 'PUT 請求成功' });
    });app.delete('/data/:id', (req, res) => {// 處理 DELETE 請求,刪除資源res.json({ message: 'DELETE 請求成功' });
    });app.patch('/data/:id', (req, res) => {// 處理 PATCH 請求,部分更新資源res.json({ message: 'PATCH 請求成功' });
    });
    

三、 作用與主要區別

  • 數據操作目的:

    • GET 用于讀取數據,POST 用于創建數據,PUT 用于全量更新數據,PATCH 用于局部更新數據,而 DELETE 用于刪除數據。
  • 參數傳遞位置:

    • GET 的參數通常在 URL 中傳遞,而 POSTPUTPATCH 則將數據放在請求體中。
  • 冪等性:

    • GET、PUT、DELETE、HEAD、OPTIONS 通常是冪等的,即相同請求多次執行結果相同。
    • POSTPATCH 則可能不是冪等的,重復提交可能導致資源多次創建或部分更新結果不確定。
  • 安全性考慮:

    • GET 請求由于數據暴露在 URL 中,不適合傳遞敏感數據。
    • POSTPUTPATCH 請求通過請求體傳輸數據,相對安全但仍需通過 HTTPS 等方式保證數據傳輸安全。

四、 舉例講解

1. 創建 Spring Boot 工程

  1. 使用 Spring Initializr
    可以通過 Spring Initializr 快速生成項目:

    • 選擇 Maven 或 Gradle 項目
    • 語言選擇 Java
    • Spring Boot 版本選擇當前穩定版本
    • 添加依賴:Spring Web(spring-boot-starter-web)
    • 生成項目后下載并導入到 IDE 中
  2. 項目結構
    工程生成后基本結構如下:

    ├── src
    │   ├── main
    │   │   ├── java
    │   │   │   └── com.example.demo
    │   │   │       └── DemoApplication.java
    │   │   └── resources
    │   │       └── application.properties
    └── pom.xml
    

2. 添加依賴

pom.xml 中確保已經包含了以下依賴(若使用 Gradle 則為相應依賴):

<dependencies><!-- Spring Boot Web 依賴 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 其他依賴,如需要可添加 -->
</dependencies>

3. 編寫 Controller 實現接口

在 Spring Boot 中,通過編寫 @RestController 類來處理 HTTP 請求。下面是一個示例 Controller,展示了如何實現 GET、POST、PUT、DELETE 和 PATCH 請求。

package com.example.demo.controller;import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/api")
public class DemoController {// GET 請求:獲取資源@GetMapping("/data")public String getData() {return "GET 請求成功";}// POST 請求:創建新資源@PostMapping("/data")public String createData(@RequestBody String requestData) {// 模擬處理請求體中的數據 requestDatareturn "POST 請求成功,接收到數據:" + requestData;}// PUT 請求:全量更新資源@PutMapping("/data/{id}")public String updateData(@PathVariable("id") Long id, @RequestBody String newData) {// 根據 id 查找資源并進行全量更新return "PUT 請求成功,更新 ID:" + id + " 的數據為:" + newData;}// DELETE 請求:刪除資源@DeleteMapping("/data/{id}")public String deleteData(@PathVariable("id") Long id) {// 根據 id 刪除資源return "DELETE 請求成功,刪除 ID:" + id + " 的數據";}// PATCH 請求:部分更新資源@PatchMapping("/data/{id}")public String patchData(@PathVariable("id") Long id, @RequestBody String partialData) {// 根據 id 更新部分數據return "PATCH 請求成功,部分更新 ID:" + id + " 的數據:" + partialData;}
}

關鍵點說明

  1. 注解說明

    • @RestController:標識該類為控制器,并自動將方法返回的對象序列化為 JSON 格式響應。
    • @RequestMapping("/api"):為控制器設置統一的請求前綴。
    • @GetMapping@PostMapping@PutMapping@DeleteMapping@PatchMapping 分別對應 HTTP 請求方法,簡化了 @RequestMapping(method = RequestMethod.XXX) 的寫法。
  2. 參數獲取

    • @PathVariable:用于獲取 URL 中的動態參數(如 /data/{id} 中的 id)。
    • @RequestBody:用于獲取請求體中的數據,常用于 POST、PUT、PATCH 請求。
  3. 返回值
    直接返回字符串,實際應用中可以返回 Java 對象,由 Spring Boot 自動轉換為 JSON 格式。

4. 啟動與測試

  1. 啟動應用
    運行 DemoApplication.java 中的 main 方法,啟動 Spring Boot 應用。

  2. 測試接口
    可以使用 Postman、curl 或瀏覽器進行接口測試。例如:

    • GET 請求:訪問 http://localhost:8080/api/data
    • POST 請求:向 http://localhost:8080/api/data 發送帶有 JSON 數據的請求體
    • PUT/DELETE/PATCH 請求:訪問 http://localhost:8080/api/data/1(其中 1 為示例資源 ID)

5. 總結

通過以上步驟,我們完成了使用 Spring Boot 實現常見 HTTP 請求方式的接口:

  • 項目初始化與依賴添加:確保項目中包含 spring-boot-starter-web 依賴。
  • Controller 實現:使用不同的映射注解(如 @GetMapping@PostMapping 等)來處理不同請求類型,并通過 @RequestBody@PathVariable 處理參數。
  • 啟動與測試:啟動應用后,通過工具測試各個接口是否符合預期。

這種實現方式不僅遵循 RESTful 風格,也使得前后端交互更為清晰和易于維護。


總結

接口請求方式是前后端數據交互的基礎,不同的 HTTP 方法對應著不同的操作語義和數據處理方式。合理選擇請求方式有助于:

  • 遵循 RESTful API 設計原則,
  • 保持數據操作的明確性,
  • 確保系統的安全性與穩定性。

理解和正確使用這些請求方式,不僅能夠提高系統的擴展性,還能在開發、維護以及調試過程中帶來極大的便利。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/73445.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/73445.shtml
英文地址,請注明出處:http://en.pswp.cn/web/73445.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【附代碼】【MILP建模】3D裝箱問題(3D-Bin Packing Problem)

文章目錄 相關教程相關文獻問題描述建模思路——carton 方向平行軸建模方法&#xff08;9變量6約束&#xff09;平行軸建模方法&#xff08;4變量8約束&#xff09;枚舉建模方法&#xff08;6變量1約束&#xff09; 建模思路——carton 位置平行軸建模方法枚舉建模方法 Bin長寬…

【計算機網絡中的奈氏準則與香農定理】

文章目錄 一、前言二、奈氏準則1. 概念2. 奈氏準則公式3. 奈氏準則的意義 三、香農定理1. 概念2. 香農定理公式3. 香農定理的意義 四、奈氏準則與香農定理的對比五、應用示例1. 奈氏準則示例2. 香農定理示例 六、總結 一、前言 在計算機網絡中&#xff0c;數據的傳輸速率與信道…

【C++】回調函數和回調對象

文章目錄 回調可調用對象函數指針作回調函數對象作回調函數對象的使用std::function【C11】作回調使用 【C11】Lambda表達式作回調【C11】bind對象作回調std::bind的使用作回調使用 回調 當發生某種事件時需要調用或觸發另一個事件即為回調&#xff0c;回調的核心即為將可調用…

DeepSeek助力文案,智能音箱如何改變你的生活?

你好&#xff0c;我是三橋君 你有沒有為寫智能音箱的宣傳文案而抓耳撓腮過&#xff1f;三橋君在這方面可是有些感想&#xff0c;今天就來給你嘮嘮怎么用DeepSeek寫出超贊的智能音箱宣傳文案。 首先&#xff0c;你得給DeepSeek喂足“料”。這就好比做飯&#xff0c;你得準備好各…

【區塊鏈安全 | 第一篇】密碼學原理

文章目錄 1.哈希函數1.1 哈希函數的性質1.2 常見哈希算法1.3 Merkle Tree&#xff08;默克爾樹&#xff09;1.4 HMAC&#xff08;哈希消息認證碼&#xff09; 2. 公鑰密碼學2.1 對稱加密 vs 非對稱加密2.2 RSA 算法2.3 ECC&#xff08;橢圓曲線密碼學&#xff09;2.4 Diffie-He…

基于websocketpp實現的五子棋項目

該博客對于學完C和linux操作系統&#xff0c;但不知道如何用C開發項目&#xff0c;已經不知道C如何使用第三方庫的人來說一定很有幫助&#xff0c;請耐心看完&#xff01; 先看一下游戲會顯示的前端界面&#xff0c;對理解這個游戲的前后端交互過程會有幫助 1. 開發環境 1.1 …

基于Redis分布鎖+事務補償解決數據不一致性問題

基于Redis的分布式設備庫存服務設計與實現 概述 本文介紹一個基于Redis實現的分布式設備庫存服務方案&#xff0c;通過分布式鎖、重試機制和事務補償等關鍵技術&#xff0c;保證在并發場景下庫存操作的原子性和一致性。該方案適用于物聯網設備管理、分布式資源調度等場景。 …

RK3568筆記八十: Linux 小智AI環境搭建

若該文為原創文章&#xff0c;轉載請注明原文出處。 最近小智AI火了&#xff0c;韋老師出了 Linux 小智 AI 聊天機器人 版本&#xff0c;想移植到 RK3568上&#xff0c; 由于和韋老師硬件不同&#xff0c;所以需要交叉編譯一些庫&#xff0c;為后續移植做準備。 一、環境 1、…

C# SerialPort 使用詳解

總目錄 前言 在工業控制、物聯網、嵌入式開發等領域&#xff0c;串口通信&#xff08;Serial Port Communication&#xff09;是連接串行設備&#xff08;如條碼掃描器、GPS接收器等&#xff09;與計算機的重要手段。C# 提供了內置的 SerialPort 類&#xff0c;簡化了串口開發…

3D點云的深度學習網絡分類(按照作用分類)

1. 3D目標檢測&#xff08;Object Detection&#xff09; 用于在點云中識別和定位目標&#xff0c;輸出3D邊界框&#xff08;Bounding Box&#xff09;。 &#x1f539; 方法類別&#xff1a; 單階段&#xff08;Single-stage&#xff09;&#xff1a;直接預測3D目標位置&am…

LabVIEW 與 PLC 通訊的常見方式

在工業自動化和數據采集系統中&#xff0c;PLC&#xff08;可編程邏輯控制器&#xff09; 廣泛用于控制和監測各種設備&#xff0c;而 LabVIEW 作為強大的圖形化編程工具&#xff0c;常用于上位機數據處理和可視化。為了實現 LabVIEW 與 PLC 的高效通訊&#xff0c;常見的方法包…

2025 polarctf春季個人挑戰賽web方向wp

來個彈窗 先用最基礎的xss彈窗試一下 <script>alert("xss")</script>沒有內容&#xff0c;猜測過濾了script&#xff0c;雙寫繞過一下 <scrscriptipt>alert("xss")</scscriptript>background 查看網頁源代碼 查看一下js文件 類…

【Ai】--- 可視化 DeepSeek-r1 接入 Open WebUI(超詳細)

在編程的藝術世界里,代碼和靈感需要尋找到最佳的交融點,才能打造出令人為之驚嘆的作品。而在這座秋知葉i博客的殿堂里,我們將共同追尋這種完美結合,為未來的世界留下屬于我們的獨特印記。【Ai】--- 可視化 DeepSeek-r1 接入 Open WebUI(超詳細) 開發環境一、前情提要:你…

7.1-7.2考研408數據結構查找算法核心知識點深度解析

考研408數據結構查找算法核心知識點深度解析 一、查找基本概念 1.1 核心定義與易錯點 查找表與關鍵字 易錯點:混淆靜態查找表(僅查詢)與動態查找表(含插入/刪除操作)的應用場景。例如哈希表屬于動態查找結構,而分塊查找適用于靜態數據。難點:理解平均查找長度(ASL)的…

Redis--redis客戶端

目錄 一、引言 二、數據庫管理命令 三、redis客戶端 四、Java客戶端使用Redis 五、相關命令使用 1.get&#xff0c;set 2.exists&#xff0c;del 3.keys 4.expire&#xff0c;ttl 六、總結 一、引言 在之前學了redis相關類型命令之后&#xff0c;本篇文章&#xff0c;…

SpringBoot3.0不建議使用spring.factories,使用AutoConfiguration.imports新的自動配置方案

文章目錄 一、寫在前面二、使用imports文件1、使用2、示例比對3、完整示例 參考資料 一、寫在前面 spring.factories是一個位于META-INF/目錄下的配置文件&#xff0c;它基于Java的SPI(Service Provider Interface)機制的變種實現。 這個文件的主要功能是允許開發者聲明接口的…

鴻蒙特效教程10-卡片展開/收起效果

鴻蒙特效教程10-卡片展開/收起效果 在移動應用開發中&#xff0c;卡片是一種常見且實用的UI元素&#xff0c;能夠將信息以緊湊且易于理解的方式呈現給用戶。 本教程將詳細講解如何在HarmonyOS中實現卡片的展開/收起效果&#xff0c;通過這個實例&#xff0c;你將掌握ArkUI中狀…

hn航空app hnairSign unidbg 整合Springboot

聲明: 本文章中所有內容僅供學習交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包內容、敏感網址、數據接口等均已做脫敏處理&#xff0c;嚴禁用于商業用途和非法用途&#xff0c;否則由此產生的一切后果均與作者無關&#xff01; 逆向分析 學習unidbg補環境。先弄一個…

奇怪的異形選項卡樣式、弧形邊框選項卡

<template><div :class"$options.name"><div class"tab">默認選項卡</div><div class"tab" active>選中選項卡</div><el-divider /><el-tabs v-model"tabActiveName" tab-click"(t…

特殊行車記錄儀DAT視頻丟失的恢復方法

行車記錄儀是一種常見的車載記錄儀&#xff0c;和常見的“小巧玲瓏”的行車記錄儀不同&#xff0c;一些特種車輛使用的記錄儀的外觀可以用“笨重”來形容。下邊我們來看看特種車載行車記錄儀刪除文件后的恢復方法。 故障存儲: 120GB存儲設備/文件系統:exFAT /簇大小:128KB 故…