当前位置: 首页 > 知识库问答 >
问题:

从c或Ruby调用Spring Rest服务

娄建义
2023-03-14

我正在学习SpringRest服务,我对SpringRest服务有疑问

是否可以从其他语言(如c或Ruby)调用Spring Rest服务,其中c或Ruby将作为客户端,Spring Rest服务作为服务或资源提供者。

如果可能的话,有人能举例说明简单、详细的方式吗。

提出这个问题的原因是,如果我们使用Jax-ws开发web服务,那么跨技术的互操作性就会发生,比如从C调用基于Java的web服务,反之亦然。使用Spring-Rest中开发的Rest服务或使用Jersey-api框架也会发生同样的事情吗。

共有2个答案

乔丁雨
2023-03-14

是的,这是可能的。当然,关键是序列化/反序列化数据。只要Rest服务接受序列化数据作为输入,并返回序列化数据作为输出。

例如,假设您有一个endpointhttp://www.example.com/public-api/foo,使用可接受的方法GET(它提供数据)。

在Spring,您有一个名为Foo的资源。java,其形式如下

class Foo implements Serializable {
     private static long serialVersionUID = -1L;

     private String someProperty;

     public Foo() {
         ...
     }

     public String getSomeProperty() { 
         return this.someProperty; 
     }

     public void setSomeProperty(String someProperty) {
         this.someProperty = someProperty;
     }

}

使用以下控制器

@Controller
@RequestMapping(value={"/"})
class FooController {

    @RequestMapping(value={"/foo"}, method={RequestMethod.GET})
    public HttpEntity<Foo> foo() {


        ...

        Foo foo = new Foo();

        ...

        return new ResponseEntity<ResourceSupport>(foo, HttpStatus.OK);

    }


}

当您在浏览器中访问此内容时,它将返回以下文本

{
   "_self": "http://www.example.com/public-api/foo",
   "someProperty": ...
}

这个输出(JSON)可以非常简单地用Ruby和C(或任何语言)进行解析。

输入方式相同。您只需发布或放置符合您试图输入的任何资源的JSON数据,而不是解析JSON。要发布或放置新的Foo对象,只需发布或放置具有适当属性的JSON数据。

刘玉石
2023-03-14

REST调用只是一个http调用。这项服务不关心客户端使用什么语言编码——可以是浏览器、手机,用c、java、c、objective-c编写,这无关紧要。

通常,如果您有对象数据要从客户端传递给服务,您将用JSON或XML对其进行编码。

 类似资料:
  • 问题内容: 我有一个编译的Python库和API文档,我想从Ruby使用。 是否可以加载Python库,实例化其中定义的类并从Ruby对该对象调用方法? 问题答案: 本文提供了一些从Python运行Ruby代码的技术,这些技术也应适用于相反的方向(例如XML- RPC或管道),以及从Ruby运行Python代码的特定技术。特别是rubypython或Ruby / Python 看起来像他们可以做您

  • 问题内容: 我正在尝试从C 调用python类中的方法。调用它的C 方法是C ++回调。 在此方法中,当我尝试调用python方法时,它给出了。 我已经将python函数的实例保存在全局变量中,例如 python方法在哪里,将在回调中使用。 在回调中,参数创建为 创建时 在这一行中,它给出了细分错误。之后,实际的python方法称为 问题答案: 如果要从C / C ++回调中调用Python函数,

  • 问题内容: 我基本上需要确保对这项服务的要求。 已经为我提供了一个测试客户端和两个文件,以及,但是我不知道如何使用它们:我了解X509Certificate2类以某种方式涉及。 执行测试客户端的命令行如下: 它可以正常工作,因此我既可以看到服务,也应该正确配置服务本身。 我的C#客户端(针对.NET 2.0)使用普通的Web参考来执行请求: 服务器设置应正确设置。 我摸索了这些方法,但是我无法给出

  • 问题内容: 构建与C或C ++库的Python绑定的最快方法是什么? (如果这很重要,我正在使用Windows。) 问题答案: Boost Python库是用于连接Python和C 的框架。它使您可以快速而无缝地将C 类的函数和对象暴露给Python,反之亦然,而无需使用特殊工具-仅使用C 编译器即可。它被设计为以非介入方式包装C 接口,因此您不必为了包装而完全更改C ++代码,从而使Boost.

  • 我有一个rest服务,实现如下- 我得到了所有的头和响应状态正确,但我没有得到json响应。这里怎么了?

  • 我是一名windows开发人员,对web应用程序和ASP知之甚少。我正在尝试为某人创建一个C#dll(它正在进行Web服务调用),这是从一个经典的ASP应用程序调用的。 这一切都是从一个WinForms测试应用程序开始的,该应用程序成功地加载了WSDL并调用了该web服务。现在的需求是获取测试应用程序功能,将其移动到dll,并从ASP应用程序调用该dll。我天真地将appconfig文件留在那里,