在我的Rails 5API项目中,我正在使用SOAP服务。通过使用Savon,version 2,我将从任何SOAP服务解析为JSON格式的响应。
在我的Rails项目中,我正在为多个SOAP服务创建一个外观。假设4个SOAP服务具有90%相似的响应格式/结构。我希望我的外观以JSON格式接受并发送来自服务的信息。
我找到了一些解决办法,但不是一个理想和有效的方法:
第一种选择似乎是过度杀戮和容易出错。
第二个选项似乎是一个非常耗时的项目,如果我必须在短时间内自己完成这个项目,它也会容易出现很多错误。
第三种选择是由于预算原因而拒绝。
所以我的问题是,有没有工具可以帮助我?我已经做了大量的研究,但没有找到任何似乎是解决我的问题或满足我的需要的东西。
目前为止的解决办法
我发现最务实的做法是选择1。我正在做类似的事情:
# app/controllers/api/v1/some_resources_controller.rb
...
# Retrieve response from service
response = fetch_resources_from_service(query)
# Pick out the values from the response that we want to output
resource_params = strip_response(reponse, whitelist: [:id, :title, :date, ...]
# Create a model object from these stripped/whitelisted params
resource = Api::V1::SomeResource.new(resource_params)
# Render in JSON API format (with active_model_serializer)
render json: resource, adapter: :jsonapi, serializer: Api::V1::SomeResourceSerializer发布于 2016-08-06 13:46:40
我不是Ruby人,但是简单地将xml转换为json的ruby库又如何呢?似乎您正在构建一个类似于反向代理的东西,内置了一个SOAP到json转换器。如果是这样的话,那么很难跟上后端API的变化和对象模型。使用类似https://github.com/jnunemaker/crack的东西可以使您免于为每个端点创建对象模型。
还发现了一个类似的所以问题Ruby XML to JSON Converter?
https://stackoverflow.com/questions/38668218
复制相似问题