WSO2 Synapse:设置 URL 参数

2024-01-19

我正在尝试做一些看似简单但无法使其发挥作用的事情。基本上我希望 WSO2 API 管理器向 REST 调用添加 URL 参数。

设置和问题

我安装了 WSO2 API 管理器。我还有一个 Tomcat 运行着一个名为一些servlet它只是记录它收到的任何内容并返回正常。我已将 servlet 添加为管理器中的 API,因此我可以直接调用 servlet 或通过 WSO2 API mgr 调用该 servlet。

我可以跑

curl http://localhost:8080/someservlet/servlet/toto?blob=blib&secret=pass

servlet 工作正常,它告诉我它已收到路径/toto和参数blob and secret.

我可以跑

curl -H "Authorization: Bearer [...]" --url "http://192.168.23.1:8280/someservlet/1.0/toto?blob=blib&secret=pass"

它的作用完全一样。到目前为止,一切都很好。

我想要的是运行:

curl -H "Authorization: Bearer MqVQuHqLNphtPV3XF1CtXVmbyP8a" --url "http://192.168.23.1:8280/someservlet/1.0/toto?blob=blib"

(请注意,我已经删除了secret范围)

...仍然得到相同的结果。

所以基本上我希望 API 管理器添加 URL 参数秘密=通行证.

我尝试的第一件事:财产调解员

使用 Synapse XML 配置属性 REST_URL_POSTFIX.

我编辑了 API 配置文件,并添加了

<property name="REST_URL_POSTFIX" value="/blob?toto=titi" scope="axis2" type="STRING"/>

现在如果我跑

curl -H "Authorization: Bearer [...]" --url "http://192.168.23.1:8280/someservlet/1.0/toti?blab=blib&secret=puss"

就好像我跑了一样someservlet/1.0/blob?toto=titi:我的所有路径和参数都消失了,并被配置的路径和参数替换。嘿,这就是它应该如何工作,不是吗!

问题:

  1. 这不会向 URL 添加任何内容,它会设置 URL 后缀,这意味着现有参数会消失(在上面的示例中,喋喋不休=blib)
  2. 它必须从一个开始"/"是一个有效的值,所以我不能只添加&秘密=通过(当然,因为问题1,这个无论如何也没用)

所以基本上这不允许我附加最后的&秘密=通过.

我尝试的第二件事:重写 URL 中介器

我找到了这个调解员,虽然它可能不会成功,但这是一个很好的线索:我可以打电话给秘密=foo,并让中介者将其替换为秘密=通行证.

我把它放在配置文件中:

<rewrite>
  <rewriterule>
    <action type="replace" value="pass" fragment="query" regex="foo"/>
  </rewriterule>
</rewrite>

这是行不通的。起初我以为我的动作参数不正确。但错误信息是:

Malformed URL when processing /someservlet/1.0/toti?blab=blib&amp;secret=foo

畸形?异常堆栈跟踪中有更多详细信息:

java.net.MalformedURLException: no protocol: /someservlet/1.0/toti?blab=blib&secret=foo

所以发生的事情是调解器(记录或重写)收到一条消息,其"To:"字段指向一个没有协议的 URL!

当然,我一直在谷歌上搜索,在某些情况下我发现其他人也有logMediator:发送至:/blabla,以及其他(大多数)情况,他们有logMediator:至:http://blabla。我真的不明白是什么造成了这种差异。 :-(

所以这就是我被困住的地方! :-(

要尝试的选项

我知道可能有一个应该有效的大锤解决方案:

  1. use property存储完整路径和所有参数
  2. 实现我自己的中介器(例如在Java中)来修改这些参数
  3. use 属性 REST_URL_POSTFIX将修改后的后缀放入呼叫中

不过我觉得这个问题应该有一个更简单的解决方案。

我有一种希望有人能给我指出一个我没有找到的简单资源(中介、示例、语法错误等),而这正是我想要的。乐观...:-)

谢谢阅读。有任何想法吗?


据我了解,您正在尝试附加secret=pass到您的端点网址。 当您调用 API 时,我相信您正在发送该参数。 您发送的同一时间"blab=blib"参数也。但在 ESB 中你需要将其更改为"toto=titi"

您使用的方法是正确的。(即:使用属性REST_URL_POSTFIX)在这种情况下,它将替换所有请求参数。 但在使用之前,您可以保存请求参数并使用"REST_URL_POSTFIX"您可以获得所需的最终 REST url。 (是的,这是您提到的“要尝试”的最后一个选项) 在“TO”地址中,您只有端口号后面有地址。 如果你使用"" POST_TO_URI"属性,您将看到日志中打印的完整地址 URL,但如果 BE 服务和 ESB 之间配置了任何代理服务器,我们将使用该地址

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

WSO2 Synapse:设置 URL 参数 的相关文章

  • Java HttpURLConnection:内容长度计算

    我目前正在为 bitbucket issues RESTful API 开发一个库 我取得了很大的进步 现在我要解决这个部分更新问题 http confluence atlassian com display BBDEV Issues Is
  • 如何正确处理 JWT 刷新?

    我有一个安卓应用程序 它连接到一个REST API开发与Jersey 我的 REST 端点通过令牌进行保护 下面是我生成它们的方法 Algorithm algorithm Algorithm HMAC256 secret String to
  • Laravel 中的 PATCH Ajax 请求

    是否可以向 Laravel 发出 Ajax PATCH 请求 或者我是否仅限于 POST Laravel 在输入隐藏字段中使用 PATCH 但是 我没有使用表单元素 只是在单击时 通过 Ajax 请求 应该部分更新记录的按钮 这条路线会是什
  • 如何访问 NFL 的 API?

    我一直在尝试访问或设法访问 NFL com 的数据 但尚未找到 这些网站上有公开文档 https api nfl com docs identity oauth2 index html 但这些文档不会告诉您如何获取客户端 ID 或客户端密钥
  • WCF 服务契约将被 XML 和 Json 序列化

    我如何创建要加入的服务合同XmlSerializer 格式也WebMessageFormat Json在 WCF RESTful 服务中 我需要的是从 ASP Net 1 1 的代码后面调用 CallADSWebMethod 操作契约 该契
  • 为移动应用程序创建 API - 身份验证和授权

    Overview 我正在寻找为我的应用程序创建一个 REST API 最初 主要目的是供移动应用程序 iPhone Android Symbian 等 使用 我一直在研究基于 Web 的 API 的身份验证和授权的不同机制 通过研究其他实现
  • 如何向最终用户隐藏 REST API Url?

    是否可以隐藏我通过 AJAX 用于填充页面数据的 REST URL 我不希望其他人从我的 REST API 获取和使用 但需要使用它在我的网站中显示内容 如何向最终用户隐藏我的 REST API URL 无法在 JavaScript 中向最
  • 如何将 REST API 与 FireMonkey 结合使用?

    我需要在 FireMonkey 中实现 REST API 来获取一些信息 但我不确定如何做到这一点 REST API使用OAuth2 我可以访问两个代码 Consumer Key和Consumer Secret 之后 我需要获得一个临时的
  • 来自复杂对象的 spring RestTemplate POST 参数

    我正在尝试使用 postForObject 方法使用restTemplate 来测试我们的REST 服务 单元测试 Test public void testPostOrder String url BASE URL orders Orde
  • PHP:在 CURL GET 调用中使用 API 密钥

    我看过关于使用 api 密钥在curl 中验证 post 调用的帖子 我有一个 GET 调用 需要 apikey 进行授权 即请求必须具有包含 apiKey 的授权标头 我已经获得了 api 密钥并尝试将其用于 GET 调用
  • 使用 Post 以 REST 方式更新值

    我对 REST 很陌生 所以如果这是一个愚蠢的问题 请原谅我 这样 我就有了客户资源 一个客户有很多信用 所以 我想获取客户积分的 URL 是 客户 21 积分 其中 21 是客户 ID 现在 如果我没有全额积分 如何添加积分 例如 客户有
  • 使用 JWT 创建 PostMan GET 请求

    我是 PostMan 的新手 通常我使用curl 这是获得 JTW 的一个 curl X POST H X Requested With XMLHttpRequest H Content Type application json H Ca
  • 如何从 Android 调用 RESTful 方法?

    我尝试了两种不同的方法来从 Android 调用简单的 REST 方法 所述 REST 方法 适用于其他客户端 仅返回一个 int val 例如 17 以下两次尝试都是基于我在网上找到的代码 有一种是这样的 公共无效onFetchBtnCl
  • iPhone 应用程序中的异步、同步、线程

    我正处于一个应用程序的设计阶段 该应用程序将利用 REST Web 服务 并且在使用异步 同步和线程方面遇到了困境 这是场景 假设您有三个选项可供深入研究 每个选项都有自己的基于 REST 的资源 我可以使用同步请求延迟加载每个请求 但这会
  • 当会话令牌无效时,我应该使用什么状态代码?

    创建 Web 服务 RESTful 时 当会话令牌无效时我应该使用什么状态代码 目前我公司的人给我发了一个404 未找到 但我认为这是不正确的 因为资源存在 也许我应该使用 401 Unauthorized 你怎么认为 您建议我在这种情况下
  • 获取/发布到 RESTful Web 服务

    我需要从 VB6 对 RESTful Web 服务进行一些 GET 和 POST 操作 最好和最简单的方法是什么 您需要添加对 MSXML 库的引用 Dim sUrl As String Dim response As String Dim
  • 在 Postman 中连接 ECONNREFUSED

    我试图通过邮递员测试我的 REST API 但收到以下错误 这是我编写的第一个 REST API 我对邮差很陌生 所以不确定我做错了什么 下面是我尝试使用此 URL 在邮递员中调用的代码 我在 URL 中传递两个日期参数 https loc
  • 将 List 转换为 JSON

    Hi guys 有人可以帮助我 如何将我的 HQL 查询结果转换为带有对象列表的 JSON 并通过休息服务获取它 这是我的服务方法 它返回查询结果列表 Override public List
  • 对于一般不成功的请求(不是错误),适当的 HTTP 状态代码响应是什么?

    我正在创建一个 RESTful API 它将处理许多用户交互 包括使用存储的信用卡下订单 如果订单成功 我将返回 200 OK 如果订单请求格式错误或无效 我将返回 400 Bad Request 但如果订单实际处理过程中出现问题 我该怎么
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐