Angular前端与springBoot后端的http请求交互

2023-10-27

前言:

开发模式采用前后端分离,前端用angular(这里指的是angular2,不要和angularjs混淆了),后端采用springBoot,主要介绍下angular与后端接口调用问题。

思路:

其实官网都有调用,只是一些地方要注意到,而往往就是一些小细节或者小问题卡你半天,因此技术点无大小。

前端angular定义了一个服务文件,专门放置与后端接口交互的方法接口,方法接口中采用的是angular的 HttpClient 的get,put,post,delete方法 参数各异,但大多数第一个参数就是后端url,第二个参数视情况而定,详细的可以去angular的官网文档中去查看阅读, 参考:angular httpClient官方文档 后面针对增、删、改、查会给出具体代码;

后端采用springboot,搞技术的人都不陌生,唯一强调一点,也是困扰我半天的地方,就是因为前段会存在跨域问题,所以在后端的接口定义上要加上几个配置注释,此外接收参数时,参数上要加上@RequestBody 配置说明,否则参数实体对象接收为空

具体代码如下:

一,定义前段对象实体

    export class UserInfo {
   
      id: number;
      userName: string;
      password: string;

      // public constructor(
      //   fields?: {
   
      //     id: number,
      //     userName: string,
      //     password: string
      //   }) {
   
      //   // tslint:disable-next-line:curly
      //   if (fields) Object.assign(this, fields);
      // }

      // public constructor(name: string) {
   
      //   this.userName = name;
      // }

      getFullName(): string {
   
        return this.id + ' ' + this.userName;
      }
    }

二:定义前段接口调用类service.service.ts(为服务类,可用angular命令生成)

ng generate service service

然后填充service代码如下:

    import {
   Injectable} from '@angular/core';
    import {
   HttpClient, HttpHeaders, HttpParams} from '@angular/common/http';
    import {
   Observable, of} from 'rxjs';
    import {
   UserInfo} from './userInfo';
    import {
   logger} from 'codelyzer/util/logger';
    import {
   log} from 'util';
    import {
   catchError} from 'rxjs/operators';
    import {
   callHooks} from '@angular/core/src/render3/hooks';

    const httpOptions = {
   
      headers: new HttpHeaders({
   'content-Type': 'application/json'})
    };

    @Injectable({
   
      providedIn: 'root'
    })
    export class ServiceService {
   
      // private static METHOD_DELTE = 'DELETE';
      // private static METHOD_POST = 'POST';
      // private static METHOD_GET = 'GET';
      // private static METHOD_PUT = 'PUT';

      private serviceUrl = 'http://127.0.0.1:8080';

      constructor(private httpClient: HttpClient) {
   
      }

      // 获取列表数据
      getUserList(): Observable<UserInfo[]> {
   
        return this.httpClient.get<UserInfo[]>(this.serviceUrl + '/findUserList');
      }

      // 获取单个数据
      getOneUser(id: number): Observable<UserInfo> {
   
        const params = new HttpParams({
   
          fromString: 'id=' + id
        });
        const findhttpOptions = {
   
          headers: new HttpHeaders({
   'content-Type': 'application/json'}),
          params: params
        };
        return this.httpClient.get<UserInfo>(this.serviceUrl + '/findOneUser', findhttpOptions)
          .pipe(catchError(this.handleError<UserInfo>('getOneUser id' + id)));
      }

      // 添加一个新用户
      addUser(user: UserInfo)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular前端与springBoot后端的http请求交互 的相关文章

随机推荐

  • 挖到过src吗?请描述一下过程

    挖到过src吗 请描述一下过程 SRC 安全漏洞奖励计划 是一种由企业或组织设立的计划 旨在鼓励独立的安全研究人员发现并报告其系统或应用程序中的漏洞 这些计划的推出是为了提高安全性 及时修复潜在的漏洞 并奖励那些贡献漏洞发现的研究人员 SR
  • 如何让网页变灰色

    在一些重大节日 如何快速使网站网页变成灰色 黑白色 在网页的标签内加入以下代码 如果想让单个网页变灰色 就写在单网页里面 如果写在继承的网页里面 是整体的变灰色 如果你不想改动CSS文件 你可以通过在网页头部中的标签内部加入内联CSS代码的
  • c语言数学追赶法编程,计算方法——C语言实现——追赶法求解非线性方程

    最近在上计算方法这门课 要求是用MATLAB做练习题 但是我觉得C语言也很棒棒啊 题目 一般三对角线性方程组的求解用这个方法 三对角线性方程组也称为带状矩阵 这方法基础上还是LU分解法 只是比LU分解法计算方法上简单一些 使用VS2017
  • [HCTF 2018]admin 1 弱口令和爆破解法

    HCTF 2018 admin 继续buu刷题 几天刷到一道比较有意思的题 HCTF 2018 admin 打开环境之后 右上角 点击login 既然题目名字都提示了admin 猜测就是弱口令 admin加123 试一下 直接就登录进去了
  • pytest自动化测试框架基础篇

    目录 前言 一 单元测试框架 二 pytest简介以及常用插件安装 三 pytest默认测试用例的规则以及基础应用 四 pytest跳过测试用例 五 pytest测试用例的前后置 固件 前言 pytest是一个基于Python语言的自动化测
  • C++ 11 新容器和新算法

    目录 新容器 forward list Abstract How Demo array Abstract Comparewith vector Compare with original array How Demo tuple Abstr
  • LFU的实现

    题目内容 实现一个 LFUCache 类 三个接口 LFUCache int capacity 创建一个大小为 capacity 的缓存 get int key 从缓存中获取键为 key 的键值对的 value put int key in
  • opensuse 在 Wayland 中启用输入法

    当我在选择了kde wayland 环境的时候 fcitx输入法不能够使用了 网上有很多教你怎么在登陆时启用输入法的 基本都是教你修改X的配置文件 然而wayland并不读取X的配置文件 wayland读取的是 etc environmen
  • 【学习笔记】栈(c语言)

    1 栈的概念 栈 一种特殊的线性表 其只允许再固定的一段进行插入和删除元素操作 进行数据插入和删除操作的一端称为栈顶 另一端成为栈底 栈中的数据元素遵循后进先出LIFO Last In First Out 的原则 压栈 push 栈的插入操
  • 2020美赛F奖论文(二):传球网络模型(PNM)的建立和影响因子分析

    上接 2020美赛F奖论文 一 摘要 绪论和模型准备 全文 2020美赛F奖论文 一 摘要 绪论和模型准备 2020美赛F奖论文 二 传球网络模型 PNM 的建立和影响因子分析 2020美赛F奖论文 三 足球团队指标和基于机器学习的球队表现
  • 最小二乘法计算一组数据的斜率(线性回归、趋势计算)

    def compute trend y 计算数据的趋势 线性回归求斜率 最小二乘法 https blog csdn net qq 45607873 article details 109425736 return x np arange l
  • python基础语法

    1 列表 定义的格式 列表名称 元素1 元素2 元素可以是数字 字符串 列表 列表的访问 整体访问 列表名称 单个访问 通过下标获取元素 切片技术来访问列表中某些元素 列表的操作 len 计算列表的长度 实现列表的加法 将两个列表合并成为一
  • 第十七章 MyBatis3.X整合Mysql数据库事务

    1 MyBatis3 x 的事务管理形式 使 JDBC的事务管理 使 java sql Connection对象完成对事务的提交 commit 回滚 rollback 关闭 close 使 MANAGED的事务管理 MyBatis 身不会去
  • 咖啡店小程序:吸引顾客的创新营销手段

    近日 酱香拿铁 的大火让大家再次把目标聚焦在年轻人都喜欢的咖啡上 现在咖啡已经成为年轻一代的社交硬通货 咖啡店也遍地开花 而随着移动互联网的快速发展 咖啡店小程序已经成为了各大咖啡店主的选择 因为它提供了便捷的方式来链接顾客和销售 那么咖啡
  • 摄像机跟随之第三人称视角(一)

    在我们开发游戏的时候 总避免不了对摄像机的设置 当然 这也因为每款游戏类型不一样 所以摄像机的跟随或者说放置位置不一样 这也要求我们写出合适的算法 本篇就主要是针对第三人称视角的摄像机 进行算法设计分析 首先来分析第三人称摄像机的特性 1
  • thinkphp6 入门(1)--安装、路由规则、多应用模式

    一 安装thinkphp6 具体参考官方文档 安装 ThinkPHP6 0完全开发手册 看云 下面仅列举重要步骤 ThinkPHP6 0的环境要求如下 PHP gt 7 2 5 1 安装Composer 2 安装稳定版thinkphp 如果
  • 浏览器显示无法解析服务器的DNS地址,搜狗浏览器无法解析服务器的DNS地址怎么解决...

    5 点击 使用下面的DNS 服务器地址 然后在下面填入 114 114 114 114 点击 确定 确定 保存设置即可解决问题 3 重置winsock 目录设置后等待提示已成功刷新DNS 解析缓存 继续输入 netsh winsock re
  • 【Kubernetes部署篇】Ansible自动化工具离线部署K8s 1.27版本

    一 前提须知 采用kubeadm方式 目前只支持 单Master 多Node部署架构 需要主机网络互通 没有网络限制 需要使用root用户权限进行部署 二 使用Ansible部署K8S集群步骤 第一步 获取离线安装包 百度网盘获取 MD5
  • L298N模块驱动电机(实现pwm调速)

    1 占空比是高电平所占周期时间与整个周期时间的比值 2 脉宽调制 PWM 基本原理 控制方式就是对逆变电路开关器件的通断进行控制 使输出端得到一系列幅值相等的脉冲 用这些脉冲来代替正弦波或所需要的波形 也就是在输出波形的半个周期中产生多个脉
  • Angular前端与springBoot后端的http请求交互

    前言 开发模式采用前后端分离 前端用angular 这里指的是angular2 不要和angularjs混淆了 后端采用springBoot 主要介绍下angular与后端接口调用问题 思路 其实官网都有调用 只是一些地方要注意到 而往往就