我想通过内容过滤记录来自某个特定端点的所有传入请求和响应.即,当我有这样的要求时:
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope">
<soap:Body>
<m:ProcessPhoto xmlns:m="http://www.w3schools.com/photos">
<m:Name>Apples</m:Name>
<m:Description>Photo with some apples in it</m:Description>
<!-- large encoded binary below -->
<m:Photo>anVzdCBhIHJhbmRvbSB0ZXh0DQpqdXN0IGEgcmFuZG9tIHRleHQNCmp1c3QgYSByYW5kb20gdGV4dA0KanVzdCBhIHJhbmRvbSB0ZXh0DQpqdXN0IGEgcmFuZG9tIHRleHQNCmp1c3QgYSByYW5kb20gdGV4dA0KanVzdCBhIHJhbmRvbSB0ZXh0DQp3b3csIGkgZGlkbid0IHRob3VnaHQgdGhhdCBhbnlvbmUgd291bGQgYmUgaW50ZXJlc3RlZCBpbiBkZWNvZGluZyB0aGlzLiBjb25ncmF0cyE=</m:Photo>
</m:ProcessPhoto>
</soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)
我想过滤它,以便它看起来像这样的日志
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope">
<soap:Body>
<m:ProcessPhoto xmlns:m="http://www.w3schools.com/photos">
<m:Name>Apples</m:Name>
<m:Description>Photo with some apples in it</m:Description>
<m:Photo>hidden</m:Photo>
</m:ProcessPhoto>
</soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)
或完全删除m:照片元素.
我发现CXF有一些LoggingInInterceptor和LoggingOutInterceptor,我可以编写自己的拦截器来做到这一点.然而,这将是一项工作要做,所以我的问题是:你知道更好,开箱即用的解决方案吗?
给定以下服务方案及其依赖项,我想设计一组 Helm 图表。
API Gateway来电Service A和Service CService A来电Service BService B来电DatabaseService C来电Service B和Service D目前我看到两种选择:
下图中的 6 个组件中的每一个都是一个图表,图中的每个箭头都是一个依赖项。

有一个Umbrella图表依赖于所有其他图表。图表Database是图表的依赖项Service B。

Helm 文档建议使用选项 2。不过,由于本地开发和 CI/CD 管道的易用性,我更热衷于选项 1。
示例场景:开发人员正在重构Service C,他想要运行他更改的代码并对其进行测试。
Service C图表。Umbrella图表,由于运行不需要的服务(例如Service A或)而导致 CPU 和内存资源的浪费API Gateway,这不能很好地适应系统的复杂性;Service C,然后Service B再然后Service D,这也不能很好地适应系统的复杂性,因为它需要执行许多手动操作,并且还要求开发人员熟悉系统的架构,以便知道需要什么图表安装。我想就采取哪种替代方案做出明智的决定。我更热衷于选项 …
我正在尝试将 HATEOAS 应用于现有应用程序,但在对由 API 响应驱动的表单输入进行建模时遇到问题。
\n\n该应用程序允许搜索和预订两个地方之间的连接。第一个端点允许搜索连接GET /connections?from={lat,lon}&to={lat,lon}&departure={dateTime}并返回以下有效负载(响应正文)。
[\n {\n "id": "aaa",\n "carrier": "Fast Bus",\n "price": 3.20,\n "departure": "2019-04-05T12:30"\n },\n {\n "id": "bbb",\n "carrier": "Airport Bus",\n "price": 4.60,\n "departure": "2019-04-05T13:30"\n },\n {\n "id": "ccc",\n "carrier": "Slow bus",\n "price": 1.60,\n "departure": "2019-04-05T11:30"\n }\n]\nRun Code Online (Sandbox Code Playgroud)\n\n为了对其中一个连接下订单,客户端需要POST /orders使用以下有效负载之一(请求正文)发出请求:
{\n "connectionId": "aaa",\n "email": "passenger@example.org"\n}\nRun Code Online (Sandbox Code Playgroud){\n "connectionId": "bbb",\n "email": "passenger@example.org",\n "flightNumber": "EA1234"\n}\nRun Code Online (Sandbox Code Playgroud){\n "connectionId": "ccc",\n "phoneNumber": "+44 111 222 333"\n}\nRun Code Online (Sandbox Code Playgroud)