Angular HTTPClient API 在 SAP 电商云中的使用
大多数前端应用程序需要通过 HTTP 协议与服务器通信,以下载或上传数据并访问其他后端服务,SAP 电商云 Spartacus UI 也不例外。 Angular 为 Angular 应用程序提供了一个客户端 HTTP API,即开发包 @angular/common/http 中的 HttpClient 服务类。 HTTP 客户端服务提供以下主要功能。 请求类型化响应对象(typed re
Angular HTTPClient 发送请求的触发方式讨论
对于所有 HttpClient 方法,该方法不会开始其 HTTP 请求,直到开发人员在该方法返回的 observable 上调用 subscribe()。 这适用于所有 HttpClient 方法。 下图的 loadLanguages 是 SAP Spartacus 前端实现里获取语言列表的方法,里面第 28 行调用了 HTTPClient 输入的实例 http 的 get 方法。这个方法返回
SAP Spartacus 中的 HTTP URL parameters
使用带有参数请求选项的 HttpParams 类在 HttpRequest 中添加 URL 查询字符串。 下面的例子,searchHeroes() 方法查询名字中包含搜索词的英雄。 首先导入 HttpParams 类,如下图高亮代码所示: 如果有搜索词,代码会使用 HTML URL 编码的搜索参数构造一个选项对象。 例如,如果术语是“cat”,则 GET 请求 URL 将是 api/he
Angular 里 HTTP 请求和响应结构的拦截器(interceptors)在 SAP Spartacus 中的应用
通过拦截,开发人员可以声明拦截器来检查和转换从应用程序到服务器的 HTTP 请求。 相同的拦截器还可以在返回应用程序的途中检查和转换服务器的响应。 多个拦截器共同形成请求/响应处理程序的前向和后向链。 拦截器可以以常规、标准的方式为每个 HTTP 请求/响应执行各种隐式任务,包括但不限于身份验证到日志记录。 如果没有拦截器的概念,开发人员将不得不为每个 HttpClient 方法调用显式地
SAP Spartacus HTTP Interceptor 的 provisioning 逻辑
假import { Injectable } from ‘@angular/core’;import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest} from ‘@angular/common/http’; import { Observable } from ‘rxjs’; /* Pass untouched request
关于 SAP Spartacus Angular HTTP Interceptor 的拦截顺序
Angular 按照开发人员提供的 HTTP Interceptors 的顺序来依次 调用这些拦截器。 例如,考虑这种例子,开发人员希望处理 HTTP 请求的身份验证,并在将它们发送到服务器之前记录它们。要完成这个场景,可以按顺序先提供 AuthInterceptor,然后再提供 LoggingInterceptor. Angular 应用发送出的请求,将从 AuthInterceptor
关于 Angular HTTP Interceptor 中 Request 和 Response 的 immutable 特性
尽管拦截器能够修改请求和响应,但 HttpRequest 和 HttpResponse 实例属性为 readonly,这意味着其具有 immutability 特性。 这种特性是 Angular 框架有意为之的设计:应用程序可能会在一个 HTTP 请求成功完成之前,多次重试请求。换言之,这意味着 Interceptor chain 可以多次重新处理(re-process)相同的请求。 如果拦截器
Node.js 应用访问 https 服务器时遇到 unable to get local issuer certificate
服务器运行在 nginx 上。 配置如下: ssl_certificate /usr/local/nginx/priv/mysite.ca.chained.crt; ssl_certificate_key /usr/local/nginx/priv/mysite.ca.key; ssl_protocols SSLv3 TLSv1 TL
SAP UI5 Tools 的 Custom UI5 Server Middleware 介绍
UI5 服务器可扩展性(Extensibility)使开发人员能够增强 UI5 服务器的功能。 开发人员可能希望以不同的方式处理请求。 例如,将各种标头添加到响应中(一个最典型的应用就是避免本地 SAP UI5 应用访问 S/4HANA OData 服务时遇到的跨域错误)或以特定方式解析 POST 请求的数据。 为此,我们可以将自定义中间件实现插入 UI5 服务器模块(该模块内部仍然基于 ex
关于 Express API app.use 中的 path 参数用法
SAP UI5 Tools 的 ui5.yaml 文件: specVersion: "2.6" type: application metadata: name: my.application server: customMiddleware: - name: myCustomMiddleware mountPath: /myapp
如何开发一个 SAP UI5 Tools 的自定义中间件扩展 - Custom Middleware Extension
自定义中间件扩展(Custom Middleware Extension)由 ui5.yaml 和自定义中间件实现组成。 它可以是一个独立的模块,也可以是现有 UI5 项目的一部分。 下面是一个 ui5.yaml 的例子: specVersion: "2.6" kind: extension type: server-middleware metadata: n
windows 环境下使用 Node.js 遇到 unable to get local issuer certificate
我有一个 OData 服务,部署在 SAP S/4HANA 服务器上,浏览器里通过如下 url,可以正常访问到其元数据: 我编写了一个 node.js 应用,通过编程的方式访问这个 OData 服务的元数据: var request = require('request'); var url = 'https://ldai2xxx:44356/sap/opu/
关于使用 git 命令行时遇到的错误消息 unable to get local issuer certificate
unable to get local issuer certificate 是开发人员在尝试使用特定于 Windows 的命令行工具 Git Bash 推送、拉取或克隆 git 存储库时面临的常见问题。 当 Git 服务器的 SSL 证书是自签名(self-signed)时,经常会出现无法获取本地颁发者证书的错误。 自签名证书的问题是与它们关联的私钥不能被撤销,这使其成为一个安全漏洞。 另一
Node.js TLSSocket 库里涉及到的证书链的概念简介
笔者使用这篇教程介绍的方法,将部署在 SAP ABAP 系统上的 OData 服务,使用如下命令行,给它绑定一个 localhost:8089 的代理。 SAP UI5 应用开发教程之一百二十一 - 一键部署开箱即用的代理服务器,解决 SAP UI5 应用开发过程中访问远端 OData 服务的跨域问题 npx cors-http-proxy -t https://xxx:44356/sa
如何给 SAP ABAP SEGW 开发的 OData 服务添加 Access-Control-Allow-Origin 响应头
正如本教程的开篇介绍文章SAP OData 开发教程 - 从入门到提高(包含 SEGW, RAP 和 CDP)所提到的,SAP OData 服务开发,从实现技术上来说,可以分为三大类。因此本教程也分为三大部分,分别进行介绍。本文是本教程的文章目录。 作者简介Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今。Jerry 是 SAP 社区导师,SA
动手开发一个有用的 ABAP ALV 工具 - 查看指定用户的 ABAP 传输请求
我们知道 ABAP 系统里有一个有用的工具,事物码 SE10,输入用户名称,可以查看该用户在本系统上创建的传输请求(Transport Request)列表: 点击 Display 按钮,能看到用户名 WANGJER 下面的所有传输请求: 每个传输请求可以展开,查看里面具体包含的 ABAP 对象。很多 ABAP 对象,比如上图蓝色高亮的 ABAP 类方法,双击之后,可以用 ABAP 编
SAP UI5 ODataModel.createEntry 单步调试
方法入口: initOData: function(){ function mySuccessHandler(){ debugger; } function myErrorHandler(){ debugger; } var oModel = n
web 开发里 SSR,CSR 和 SSG 的区别
本文介绍这三种 Web 前端开发领域中的术语的区别。 CSR - Client Side Rendering一种在浏览器上执行 JavaScript 以生成 DOM 并在挂载后显示内容的方法。 页面初始加载不显示任何内容,hydration 完成后显示。 使用 Create React App 工具库创建的 React 应用程序以这种方式呈现。 SSR - Server Side R
关于 SAP UI5 ODataModel.createEntry 返回的 context 对象
在返回的上下文中使用创建的 API 返回的 Promise 对象,以便在持久化或重置时获得通知。使用 isTransient API,您可以确定创建的上下文是 transient 的还是持久的;请注意,对于尚未在客户端创建但已从后端读取的上下文,API 返回 undefined。 Transient 上下文通常用于绑定表单或弹出窗口,以便最终用户可以查看或修改已创建条目的数据,然后再将其持久化到
如何使用 SAP UI5 V2 ODataModel 创建数据
在 OData V2 模型中创建新实体存在三种不同的方法。 最适合的方法取决于应用程序用例。 对于所有方法,对应的 API 都采用一个 groupId 指定一个批处理组,以控制何时将创建实体的 POST 请求发送到后端; 默认情况下,使用延迟批处理组 change. 方法1:ODataModel.createEntryODataModel.createEntry 创建一个条目并返回与其对应的上