REST(Representational State Transfer)是一种用于分布式超媒体系统(如万维网)的软件架构。由于客户端与服务器之间的内在解耦,来自异构系统之间具有统一接口,因此它相对于诸如SOAP的RPC架构而言越来越受欢迎。
Artifactory REST API:如何将 docker 镜像工件添加/附加到构建信息?
我有一个bamboo服务器,它可以构建docker镜像并通过反向代理将它们推送到artifactory。由于来自反向代理(NGINX)的推送不提供构建信息,我需要创建...
如何增强 Spring Boot REST API 以处理数万或更多传入请求?
所以我一直在准备并进行采访。我在两次采访中被问到这个问题,但我无法给出令人满意的答案,或者可能不是他们想听到的答案。 问题...
如何修复这个 ParameterizedType 错误,该错误在调试模式下工作正常,但在发布模式下却不起作用?
我的应用程序中有一个使用 Firebase Auth 进行身份验证的登录流程。我正在使用 Google OAuth 和基于电子邮件的身份验证。我面临的问题是登录在调试构建中工作得很好,但...
我正在设计一个REST API。 我有一个资源,我希望能够根据不同的条件更改其状态,例如URI 是: 应用程序/{application_id}/ 可能的状态...
如何从 WSO2 REST 数据服务调用 PostgreSQL 存储过程
我在 WSO2 中有一个 REST 数据服务,如下所示: 我在 WSO2 中有一个 REST 数据服务,如下所示: <data name="RESTDataService" serviceNamespace="http://ws.wso2.org/dataservice/samples/json_sample" transports="http https"> <description>Exponiendo el servicio de datos como un servicio REST.</description> <query id="obtenerEdad" useConfig="default"> <sql>SELECT * FROM verificarEdad(:id_cliente)</sql> <param name="id_cliente" paramType="SCALAR" sqlType="INTEGER" /> <result outputType="json"> { "cliente": { "verificaredad": "$verificaredad" } } </result> </query> <query id="obtenerEdadCuenta" useConfig="default"> <sql>SELECT * FROM verificaredadcuenta(:id_cuenta)</sql> <param name="id_cuenta" paramType="SCALAR" sqlType="INTEGER" /> <result outputType="json"> { "cliente": { "verificaredadcuenta": "$verificaredadcuenta" } } </result> </query> <query id="obtenerEdadSaldo" useConfig="default"> <sql>SELECT * FROM verificaredadsaldo(:id_cuenta)</sql> <param name="id_cuenta" paramType="SCALAR" sqlType="INTEGER" /> <result outputType="json"> { "cliente": { "verificaredadsaldo": "$verificaredadsaldo" } } </result> </query> <query id="obtenerDatosClientes" useConfig="default"> <sql>SELECT * FROM ObtenerDatosCliente(:id_cliente)</sql> <param name="id_cliente" paramType="SCALAR" sqlType="INTEGER" /> <result outputType="json"> { "cliente": { "nombre_completo": "$nombre_completo", "domicilio": "$domicilio", "numero_cliente": "$numero_cliente" } } </result> </query> <query id="ObtenerDatosCuenta" useConfig="default"> <sql>SELECT * FROM obtenerDatosCuenta(:p_cuenta_id)</sql> <param name="p_cuenta_id" paramType="SCALAR" sqlType="INTEGER" /> <result outputType="json"> { "cuentas": { "cuenta": { "numero_cuenta": "$numero_cuenta", "nombre_banco": "$nombre_banco", "sucursal": "$sucursal", "vigencia": "$vigencia" } } } </result> </query> <query id="ObtenerDatosSaldo" useConfig="default"> <sql>SELECT * FROM obtenerDatosSaldo(:p_saldo_id)</sql> <param name="p_saldo_id" paramType="SCALAR" sqlType="INTEGER" /> <result outputType="json"> { "saldos": { "saldo": [ { "fecha": "$fecha", "saldo": "$saldo", "tipo_movimiento": "$tipo_movimiento" } ] } } </result> </query> <query id="InsertarCliente" useConfig="default"> <sql> CALL AgregarCliente(:nombre, :domicilio, :id_cliente, :fecha); </sql> <param name="nombre" paramType="SCALAR" sqlType="STRING" /> <param name="domicilio" paramType="SCALAR" sqlType="STRING" /> <param name="id_cliente" paramType="SCALAR" sqlType="INTEGER" /> <param name="fecha" paramType="SCALAR" sqlType="DATE" type="IN" optional="false" /> </query> <query id="InsertarCuenta" useConfig="default"> <sql> CALL InsertarCuenta(:numero_cuenta, :vigencia, :cliente_id, :banco_id); </sql> <param name="numero_cuenta" paramType="SCALAR" sqlType="STRING" /> <param name="vigencia" paramType="SCALAR" sqlType="DATE" /> <param name="cliente_id" paramType="SCALAR" sqlType="INTEGER" /> <param name="banco_id" paramType="SCALAR" sqlType="INTEGER" /> </query> <query id="InsertarSaldo" useConfig="default"> <sql> CALL InsertarSaldo(:cuenta_id, :saldo); </sql> <param name="cuenta_id" paramType="SCALAR" sqlType="INTEGER" /> <param name="saldo" paramType="SCALAR" sqlType="NUMERIC" /> </query> <query id="InsertarMovimiento" useConfig="default"> <sql> CALL InsertarMovimiento(?, ?, CURRENT_DATE); </sql> <param name="cuenta_id" ordinal="1" sqlType="INTEGER" /> <param name="tipo_movimiento" ordinal="2" sqlType="STRING" /> </query> <resource method="POST" path="verificaredad"> <call-query href="obtenerEdad"> <with-param name="id_cliente" query-param="id_cliente" /> </call-query> </resource> <resource method="POST" path="verificaredadcuenta"> <call-query href="obtenerEdadCuenta"> <with-param name="id_cuenta" query-param="id_cuenta" /> </call-query> </resource> <resource method="POST" path="verificaredadsaldo"> <call-query href="obtenerEdadSaldo"> <with-param name="id_cuenta" query-param="id_cuenta" /> </call-query> </resource> <resource method="POST" path="obtenerclientes"> <call-query href="obtenerDatosClientes"> <with-param name="id_cliente" query-param="id_cliente" /> </call-query> </resource> <resource method="POST" path="obtenercuentas"> <call-query href="ObtenerDatosCuenta"> <with-param name="p_cuenta_id" query-param="id_cuenta" /> </call-query> </resource> <resource method="POST" path="saldo"> <call-query href="ObtenerDatosSaldo"> <with-param name="p_saldo_id" query-param="saldo_id" /> </call-query> </resource> <resource method="POST" path="insertar-cliente"> <description /> <call-query href="InsertarCliente"> <with-param name="nombre" query-param="nombre" /> <with-param name="domicilio" query-param="domicilio" /> <with-param name="id_cliente" query-param="id_cliente" /> <with-param name="fecha" query-param="fecha" /> </call-query> </resource> <resource method="POST" path="insertar-cuenta"> <description /> <call-query href="InsertarCuenta"> <with-param name="numero_cuenta" query-param="numero_cuenta" /> <with-param name="vigencia" query-param="vigencia" /> <with-param name="cliente_id" query-param="cliente_id" /> <with-param name="banco_id" query-param="banco_id" /> </call-query> </resource> <resource method="POST" path="insertar-saldo"> <description /> <call-query href="InsertarSaldo"> <with-param name="cuenta_id" query-param="cuenta_id" /> <with-param name="saldo" query-param="saldo" /> </call-query> </resource> <resource method="POST" path="insertar-movimiento"> <description /> <call-query href="InsertarMovimiento"> <with-param name="cuenta_id" query-param="cuenta_id" /> <with-param name="tipo_movimiento" query-param="tipo_movimiento" /> </call-query> </resource> <config id="default"> <property name="carbon_datasource_name">conn</property> </config> </data> 我的前 6 个 SQL 查询是函数: 接下来的 4 个 SQL 查询是存储过程: 我确实必须有 10 个存储过程,而不是 6 个函数和 4 个存储过程;我使用函数来执行前 6 个 SQL 查询的原因是因为我无法执行 SELECT * FROM 使用 WSO2 REST 数据服务的存储过程,我只能使用存储过程执行最后 4 个 SQL 查询,因为我只能从存储过程(使用 CALL 语句)执行数据插入,但使用前 6 个语句,我无法通过存储过程获取我的表的行。 总之,我的 REST 只能使用函数获取行数据,我只能使用存储过程来插入数据。 从 WSO2 REST 数据服务调用存储过程的正确方法是什么? 您可以执行以下操作来执行存储过程: <sql>call someFunction(?)</sql> 这适用于 SQL 数据库,Oracle 数据库将需要类似的东西 BEGIN someFunction(?); END; 我也面临这个问题,因为我的过程有返回值,oracle 使用 SYS_REFCURSOR 并且没有明确的方法在 wso2 中使用它。 如果有人有解决方案,可以回答。
同一服务器的不同 REST 端点之间的 URLSession
我有一个应用程序,可以从一堆不同的视图控制器对同一服务器进行一大堆不同的 REST 调用。关于 URLSession 的最佳实践是什么:共享同一个 URLSession
问题:当从 Angular hhtp RestClient 触发 POST 请求时,nginx 网关返回 403 在 /etc/nginx/sites-available/default 上: 服务器 { 监听 443 ssl; 服务器名称对等点...
ADO - REST - 找不到获取管道创建者 ID 的方法
我需要认识在 ADO 中创建管道的人 https://dev.azure.com/mycompany/myproject/_apis/pipelines/***?api-version=7.1 我得到了除了“创建者”字段之外的所有内容 { “……
使用带有过滤器的ckan datastore_search Rest API
我正在使用ckan 2.0 api查询这个数据集 http://data.buenosaires.gob.ar/api/3/action/datastore_search?resource_id=4dcec0c7-7cee-4ff6-ac83-7d92b39b3f69 一切正常,它归还给我一切......
我在twilio中使用rest api创建了一个频道,接下来我尝试向其中添加成员,但失败了。这是我的代码 需要('服务/Twilio.php'); // 在 twilio.co 上查找您的帐户 Sid 和令牌...
JUnit 测试错误:java.lang.AssertionError:“andExpect”的 JSON 路径“$.id”处没有值
所以我正在为一个简单的 Post 方法控制器编写一个 Junit。我编写了以下 Junit,它抛出了一个错误: 我这里有考试 这是我写的 Jnit 代码:有什么看起来很糟糕吗...
Apache HttpComponents URIBuilder 具有多值参数
我正在尝试向类似于此的端点发送 GET 请求: http://{hostname}api/search/artifact?name=junit&repos=snapshot,部署,发布 我有一个用逗号分隔的参数(repos)
我有一个实体,其中有多个子集合。在某些情况下,其中一些集合可能包含许多项目 (> 100)。但在大多数情况下,大约有 1-10 个就足够了。 当我
我需要将字符串(无字典)中的数据作为对 REST API 的调用正文。 当我打电话时 r = requests.put(url, 数据 = 字符串) 然后我可以在这次调用之后在 r.request.body 中看到它是 None...
在Spring Boot RESTful应用程序中,如何防止已登录的用户再次登录?
我使用springboot创建了一个简单的restful应用程序。它只有两个api,登录和注册。用户登录后,它返回一个jwt。这是我的配置 protected void 配置(HttpSecurity...
我目前正在尝试解析来自 STANDS4 API 的剩余 XML API 响应... XML 文件看起来像这样: 自由并非如此
对于具有复杂关系的 Web 应用程序,在 REST API 中构建数据的推荐方法是什么?
我和我的同事最近就在 Web 应用程序中构建 REST API 的最佳实践进行了激烈的辩论,特别是在处理复杂的数据和关系时。 为了保持这个...
我正在尝试使用 Restful ABAP 编程模型 (RAP) 来涵盖以下用例: 接收数据时包含字段 a、字段 b、字段 c 和字段 d 执行逻辑来转换入站
如何以及在何处使用基于 HMAC 的签名来存储 REST API 的密钥
我正在构建其他开发人员应该可以访问的 REST API。为了对客户端进行身份验证,我决定使用带有 API 密钥和密钥的 HMAC-SHA256 请求签名。 所以认证的过程...
通过未受保护的端点公开权限、ClientID 和范围安全吗?
最近我在 BFF API 中发现了一个不受保护的端点,它暴露了: 客户端ID 范围 权威 使用此端点的前端使用此响应来启动 AuthorizationCode + PKCE 流程。 这是……