我正在学习Spring Rest服务,我对Spring rest服务有疑问
是否可以从其他语言(如c ++或Ruby)调用Spring Rest服务,其中c ++或Ruby将充当客户端和Spring Rest服务作为服务或资源提供者。
如果有可能,可以通过示例解释一些简单,详细的方式。
提出这个问题的原因是,如果我们使用Jax-ws开发Web服务,互操作性将在诸如从C ++调用基于Java的Web服务调用等技术中发生,反之亦然,使用Rest服务也会发生同样的事情。是在Spring Rest开发或使用Jersey api框架开发的。
答案 0 :(得分:0)
REST呼叫只是一个http呼叫。该服务并不关心客户端编码的语言 - 可以是浏览器,手机,用c ++编写,java,c,objective-c,它并不重要。
通常,如果要将对象数据从客户端传递到服务,则应使用JSON或XML对其进行编码。
答案 1 :(得分:0)
是的,有可能。关键当然是序列化/反序列化数据。只要您的Rest服务接受序列化数据作为输入,并将序列化数据作为输出返回。
例如,假设您有一个端点http://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 ++(或任何语言)解析。
输入方式相同。您只需POST或PUT JSON数据,而不是解析JSON,这些数据符合您尝试输入的任何资源。要POST或PUT新的Foo对象,只需使用适当的属性POST或PUT JSON数据。