国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenHarmony:使用網絡組件axios與Spring Boot進行前后端交互

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-01-22 17:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

流程圖:

image.png

一、簡單的交互

前端請求函數

firstGet(): Promise< AxiosResponse >{
    return axios.get('http://192.168.211.1:8090/test/1');
}
getAaddB(a: number, b: number): Promise< AxiosResponse >{
   return axios.get('http://192.168.211.1:8090/test/2', {
      params: {
        a: a,
        b: b
      }
   })
}

這兩個函數是使用axios庫發起HTTP GET請求的函數,用于與服務器進行通信

  • 服務器端點: http://192.168.211.1:8090/test/1 這是我本機的ip地址和springboot運行端口,使用在windows終端輸入ipconfig可查看
  • 返回值: 該函數返回一個Promise,該Promise在請求成功時將包含AxiosResponse對象,其中包含了從服務器接收到的響應信息。

后端controller

package com.example.demospring.controller;
import org.springframework.web.bind.annotation.*;
@RequestMapping("/test")
@RestController
public class test1 {
    @GetMapping("/1")
    public String test11(){
        return "這是axios發送get請求從后端獲取的數據";
    }   
    @GetMapping("/2")
    public int AB(@RequestParam int a, @RequestParam int b){
        return a + b;
    }
}

test1()方法:

  • 功能: 當接收到GET請求 /test/1 時,該方法返回一個字符串 “這是axios發送get請求從后端獲取的數據”。
  • 備注: 這是一個簡單的用于演示GET請求的方法,返回字符串數據。

二、axios與Spring Boot進行前后端交互的實現

一、前后端交互配置

  • Arkts目錄結構

image.png

前端axios封裝一個簡單的網絡請求 在src/main/ets/network/AxiosRequest.ets里

import axios, { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from '@ohos/axios' // 公共請求前綴 axios.defaults.baseURL = "http://192.168.211.1:8090" // 添加請求攔截器... // 添加響應攔截器... // 導出 export default axios; export {AxiosResponse}

  • 后端用于配置跨域資源共享(CORS)的設置 登錄后復制 @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") // 映射的路徑,這里是所有路徑 .allowedOrigins(" ") // 允許的來源,這里是所有來源,可以設置具體的域名或 IP 地址 .allowedMethods("PUT", "GET", "POST", "DELETE") // 允許的 HTTP 方法 .allowedHeaders(" ") // 允許的 HTTP 頭部 .allowCredentials(false) // 是否支持用戶憑據,這里是不支持 .maxAge(300); // 預檢請求的有效期,單位秒 } @RequestMapping("/hello"):這個注解用于類級別,表示所有在這個控制器中的方法的URL映射的基本路徑 登錄后復制 @RestController @RequestMapping("/hello") public class SumUpController { ... }

二、不同請求的參數傳遞與后端接收返回代碼

1.get請求獲取數據

axios請求

export function get1(): Promise< AxiosResponse > {
  return axios.get('/hello/get1');
}

后端controller

@GetMapping("/get1")
public String get1(){
    return "這是你拿到的數據";
}

2.get請求傳遞多個參數

axios請求

export function get2(a: number, b: number): Promise< AxiosResponse > {
  return axios.get('/hello/get2', {
    //params字段包含了將要發送到后端的參數。
    params: {
      a: a,
      b: b
    }
  });
}

后端controller

@GetMapping("/get2")
 //使用@RequestParam注解從URL中獲取參數a和b。
 public String get2(@RequestParam int a, @RequestParam int b){
    return "你傳的兩個數是" + a + " " + b;
 }

@RequestParam 注解允許你自定義請求參數的名稱,并提供其他選項,如設置默認值或將參數標記為必需

3.get請求路徑參數

axios請求

export function get3(ps: number, pn: number): Promise< AxiosResponse > {
  //注意要用``(反引號)
  return axios.get(`/hello/get3/${pn}/${ps}`);
}

后端controller

@GetMapping("/get3/{pn}/{ps}")
public String get3(@PathVariable("ps") int ps, @PathVariable("pn") int pn){
    return "你的查找要求是一頁" + ps + "條數據的第" +  pn + "頁";
}

@PathVariable("id") 表示要從路徑中提取一個名為 “id” 的變量,并將其值綁定到 itemId 參數上。

4.get請求返回JSON數據

axios請求

//定義請求接收的數據類型
export interface ResponseData {
  status: string;
  message: string;
}
export function get4(): Promise< AxiosResponse< ResponseData > > {
  return axios.get('/hello/get4');
}

Promise> 表示一個 Promise 對象,該對象最終解決為 Axios 發起的 HTTP 請求的響應,而該響應的數據體應該符合 ResponseData 類型的結構。

后端controller

//@Data注解一個類時,Lombok會自動為該類生成常見的方法,如toString()、equals(),以及所有字段的getter和setter方法。
@Data
public static class ResponseData {
    private String status;
    private String message;
}
@GetMapping("/get4")
public ResponseData get4() {
    ResponseData responseData = new ResponseData();
    responseData.setStatus("success");
    responseData.setMessage("這是一條成功的消息。");
    return responseData;
}

5.post 使用對象作為請求參數

axios請求

export function post1(person: { name: string, age: number }): Promise< AxiosResponse > {
  return axios.post(`/hello/post1`, person);
}

后端controller

@Data
public static class Person {
    private String name;
    private int age;
}
@PostMapping("/post1")
public String post1(@RequestBody Person person) {
    return "你傳的姓名: " + person.getName() + " 年齡: " + person.getAge() + "。";
}

6.post 使用Map接收JSON數據

axios請求

//JSON中,鍵和字符串值都應該被雙引號包圍如
export function post2(data: any): Promise< AxiosResponse > {
  return axios.post(`/hello/post2`, data);
}

后端controller

@PostMapping("/post2")
public String post2(@RequestBody Map< String, String > mp) {
    AtomicReference< String > data = new AtomicReference<  >("");
    mp.forEach((k, v) - >{
        data.set(data + k);
        data.set(data + ": ");
        data.set(data + v + ",");
    });
    return "你傳的鍵值對是: " + data;
}

7.put請求

axios請求

export function putExample(data: string): Promise< AxiosResponse > {
  return axios.put('/hello/putExample', {data: data});
}

后端controller

@PutMapping("/putExample")
public String putExample(@RequestBody String data) {
    return "這是PUT請求,傳入的數據是: " + data;
}

8.delete請求

axios請求

export function deleteExample(id: number): Promise< AxiosResponse > {
  return axios.delete(`/hello/deleteExample/${id}`);
}

后端controller

@DeleteMapping("/deleteExample/{id}")
public String deleteExample(@PathVariable("id") int id) {
    return "這是DELETE請求,要刪除的數據ID是: " + id;
}

三、調用傳參

import router from '@ohos.router'
import {get1, get2, get3, get4, post1, post2, putExample, deleteExample} from '../network/api/TestApi'
@Entry
@Component
struct Index {
  @State get1: string = "";
  @State get2: number = undefined;
  @State get3: number = undefined;
  @State get4: {status: string, message: string} = null;
  @State post1: string = "";
  @State post2: string = "";
  @State put: string = "";
  @State delete: string = "";
  build() {
    Column() {
      Button("get1-get請求獲取數據")
        .onClick(async () = >{
          this.get1 = (await get1()).data;
        })
      Text(this.get1)
        .fontSize(20)
      Button("get2-傳遞多個參數")
        .onClick(async () = >{
          this.get2 = (await get2(1, 3)).data;
        })
      Text(`${this.get2!=undefined?this.get2:""}`)
        .fontSize(20)
      Button("get3-路徑參數")
        .onClick(async () = >{
          this.get3 = (await get3(3, 4)).data;
        })
      Text(`${this.get3!=undefined?this.get3:""}`)
        .fontSize(20)
      Button("get4-返回JSON數據")
        .onClick(async () = >{
          this.get4 = (await get4()).data;
        })
      Text(this.get4!=null ? JSON.stringify(this.get4) : "")
        .fontSize(20)

      Button("post1-使用對象作為請求參數")
        .onClick(async () = >{
          this.post1 = (await post1({name: "張三", age: 18})).data;
        })
      Text(this.post1)
        .fontSize(20)

      Button("post2-使用Map接收JSON數據的POST請求示例")
        .onClick(async () = >{
          this.post2 = (await post2({id: "1", name: "李四", status: "call"})).data;
        })
      Text(this.post2)
        .fontSize(20)

      Button("put請求")
        .onClick(async () = >{
          this.put = (await putExample("put data")).data;
        })
      Text(this.put)
        .fontSize(20)

      Button("delete請求")
        .onClick(async () = >{
          this.delete = (await deleteExample(10)).data;
        })
      Text(this.delete)
        .fontSize(20)
      Button("對一個表單的增刪改查")
        .margin(20)
        .onClick(() = >{
          router.pushUrl({
            url: "pages/TalentTableTest"
          })
        })
    }
    .width('100%')
    .height('100%')
    .justifyContent(FlexAlign.Center)
  }
}

以上就是鴻蒙開發的OpenHarmony;使用網絡組件axios與Spring Boot進行前后端交互的技術解析,更多有關鴻蒙開發的學習,可以去主頁查找,找我保存技術文檔。下面分享一張OpenHarmony學習路線圖

高清完整版曲線圖,可以找我保存 (附鴻蒙4.0&next版文檔)如下:

四、總結

一、請求參數錯誤的常見情況:

  1. 參數名稱不一致
  2. 參數類型(格式)不一致
  3. 缺少必須的請求參數
  4. 請求頭信息不符合要求

二、不同請求方式與參數傳遞方式的對應關系:

  1. RESTful風格的API通常使用路徑變量傳遞參數。在Spring框架中,可以使用@PathVariable注解來接收這些參數。
  2. URL中使用params傳遞參數時,通常使用@RequestParam注解來接收參數。
  3. 當客戶端通過請求體傳遞JSON數據時,可以使用@RequestBody注解來接收。
  4. @ModelAttribute用于綁定方法參數或方法返回值到模型中,通常用于將請求參數與模型屬性進行綁定。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 操作系統
    +關注

    關注

    37

    文章

    7401

    瀏覽量

    129284
  • 鴻蒙
    +關注

    關注

    60

    文章

    2963

    瀏覽量

    45883
  • OpenHarmony
    +關注

    關注

    33

    文章

    3952

    瀏覽量

    21096
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    解析Rockchip平臺U-Boot核心文件:boot_rkimg.c到底做了什么?

    在嵌入式開發中,U-Boot 作為引導程序的 “中流砥柱”,負責初始化硬件、加載內核并啟動系統。對于 Rockchip 平臺的設備(如常見的開發板、智能終端),boot_rkimg.c 是 U-Boot 中專門處理啟動流程的核心
    的頭像 發表于 02-03 15:29 ?743次閱讀
    解析Rockchip平臺U-<b class='flag-5'>Boot</b>核心文件:<b class='flag-5'>boot</b>_rkimg.c到底做了什么?

    【原創】OpenHarmony系統投屏工具軟件 - OpenHarmony_OHScrcpy使用推薦

    OpenHarmony_OHScrcpy - OpenHarmony投屏工具軟件 OpenHarmony_OHScrcpy是一款為OpenHarmony系統設計的投屏工具軟件,功能類似
    發表于 01-22 18:34

    #OpenHarmony HDC調試

    OpenHarmony
    視美泰
    發布于 :2026年01月16日 09:46:28

    #OpenHarmony 開發環境準備

    OpenHarmony
    視美泰
    發布于 :2026年01月16日 09:44:31

    #OpenHarmony 鏡像燒錄

    OpenHarmony
    視美泰
    發布于 :2026年01月16日 09:42:36

    #OpenHarmony 系統概述

    OpenHarmony
    視美泰
    發布于 :2026年01月16日 09:39:20

    #OpenHarmony Hello World應用以及部署

    OpenHarmony
    視美泰
    發布于 :2026年01月16日 09:32:52

    釘釘正式開源HarmonyOS圖片編輯組件

    近日,由釘釘團隊自主研發的“HarmonyOS圖片編輯組件”正式上線OpenHarmony三方庫中心倉并開源。作為一款填補鴻蒙社區圖像處理領域空白的重量級組件,該方案基于HarmonyOS
    的頭像 發表于 01-05 09:58 ?495次閱讀

    一款基于Java+Spring Boot+Vue的智慧隨訪管理系統源碼

    智慧隨訪管理系統源碼,一款基于Java+Spring Boot+Vue的B/S架構醫院隨訪管理系統源碼,采用前后端分離技術(Ant-Design+MySQL5),具有自主版權和落地案例。 隨訪管理
    的頭像 發表于 11-13 15:38 ?395次閱讀
    一款基于Java+<b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>+Vue的智慧隨訪管理系統源碼

    觸覺智能RK3576開發板OpenHarmony開源鴻蒙系統USB控制傳輸功能示例

    OpenHarmony開源鴻蒙設備與外部USB設備之間的連接管理、數據收發及設備信息交互,支持對USB設備的枚舉、配置及數據傳輸控制,適用于各類USB接口進行設備通信的場景。如A
    的頭像 發表于 09-30 16:31 ?1567次閱讀
    觸覺智能RK3576開發板<b class='flag-5'>OpenHarmony</b>開源鴻蒙系統USB控制傳輸功能示例

    如何實現組件截圖 -- componentSnapshot

    等,文字和圖片都是根據用戶信息動態生成的,整個證書在顯示的時候是通過Stack組件去完成的,如果只是在程序里顯示那么當然很簡單,但是還需要將其作為一張圖片保存到相冊里。 按照我以前的做法,就是直接通過后端
    發表于 06-30 17:45

    UI開發概述

    聲明式UI前端和UI后端分層:UI后端采用C++語言構建,提供對應前端的基礎組件、布局、動效、交互事件、組件狀態管理和渲染管線。 語言編
    發表于 06-24 06:36

    k8s網絡的基本介紹

    Kubernetes網絡是指在Kubernetes集群中不同組件之間進行通信和交互網絡架構。
    的頭像 發表于 06-16 13:42 ?941次閱讀

    UIAbility組件交互(設備內)說明

    UIAbility組件交互(設備內) UIAbility是系統調度的最小單元。在設備內的功能模塊之間跳轉時,會涉及到啟動特定的UIAbility,該UIAbility可以是應用內的其他
    發表于 05-16 06:12

    DialogHub上線OpenHarmony開源社區,高效開發鴻蒙應用彈窗

    作為鴻蒙應用開發者,在使用ArkUI現有能力進行彈窗開發時,總會遇到一些讓人糾結的交互問題:應用內進行消息提示時,既要求消息內容支持圖文混排,又要求彈窗本身不能打斷用戶交互(頁面滑動、
    發表于 04-03 17:30