gpt4 book ai didi

web-services - 有什么好的开源 REST Web 服务技术?

转载 作者:行者123 更新时间:2023-12-03 21:17:15 25 4
gpt4 key购买 nike

我正在寻找令人敬畏的 .NET (WCF) REST 功能的替代方案。

为什么?

我对开源技术有着浓厚的兴趣,但谈到 Web 服务,除了 .NET Web 服务,我没有任何经验。

此外,我目前正在使用大量 Java 和 Python,并且我正在远离 Microsoft 技术堆栈。

请提出任何编程语言的替代方案,但请解释为什么由于某些原因它是好的或更好的。 (这个原因可能与语言的选择密切相关)

我想知道什么?

  • 便于使用
  • 安装
  • 配置
  • 生成能力
  • IDE集成
  • 部署
  • 学习曲线
  • 利弊
  • 最佳答案

    Spring 3.0 REST :

    Spring 使用基于注解的 Controller ,可用于将 url 绑定(bind)到 Controller 中的方法。注释用于区分 GET 方法和 POST 方法。

    @RequestMapping(value="/hotels/{hotel}/bookings/{booking}", 
    method=RequestMethod.GET)
    public String getBooking(@PathVariable("hotel") long hotelId,
    @PathVariable("booking") long bookingId, Model model) {

    Hotel hotel = hotelService.getHotel(hotelId);
    Booking booking = hotel.getBooking(bookingId);
    model.addAttribute("booking", booking);
    return "booking";
    }

    在幕后,URI 字符串中的变量“hotel”在参数列表中被转换为 long,预订也是如此。 Spring REST 还可以使用相同的技术将 JSON 对象编码到自定义类中。请注意,此方法注释为 RequestMethod.GET ,这意味着它是为 GET 请求而不是 POST 请求调用的。

    Spring 3.0 REST 使创建 RESTful Web 服务变得更加容易,因为它消除了重新发明轮子或从 Java 对象手动编码/解码 JSON 文本的需要。

    SpringSource 博客上有一个名为 REST In Spring MVC 的演示。 .学习曲线很低,但由于依赖关系,让演示工作可能需要一些时间。完成设置并进行工作演示后,最困难的部分应该已经结束。

    对于 IDE 集成,请查看 Spring Roo .我没有使用过它,但我听说它有一些与 Eclipse IDE 集成的功能,可以让您的生活更轻松。

    休息 :

    ReSTLet 是专为 REST 设计的。因此,开销比 Spring 3.0 低很多。 ReSTLet 更适合您没有 GUI 以及您不关心 MVC 的情况。 ReSTLet 可以轻松地充当服务器和客户端。它还有一个可以运行的嵌入式服务器,从而无需像 Jetty 或 Tomcat 这样的容器。

    我很少接触 Python,但从我所看到的 Google App Engine 的 webApp 框架实现来看,Router 的概念感觉非常相似。具有 Python 背景的人可能会发现学习曲线要​​低得多:
    @Override
    public Restlet createInboundRoot() {
    Router router = new Router(getContext());
    getConnectorService().getClientProtocols().add(Protocol.FILE);

    // Serve the files generated by the GWT compilation step.
    Directory dir = new Directory(getContext(), LocalReference.createFileReference(new File("war/")));
    router.attachDefault(dir);
    router.attach("/contacts/123", ContactServerResource.class);

    return router;
    }

    它在客户端使用 GWT;我更喜欢去掉那部分,因为它让我想起了 Java Swing。虽然有些人可能会觉得这很有利,但我个人的偏好是坚持使用感觉更像 Web 的技术。

    下面是一个使用独立模式的 REST 服务器的简单示例。服务器在端口 8182 上运行,它监听 GET 请求。它具有与 Spring REST 框架类似的基于注释的模型,这也有助于拆分不同的 HTTP 方法并将它们指向类中的不同方法。这是一个非常基本的“Hello World”REST 示例:
    public class FirstServerResource extends ServerResource {  

    public static void main(String[] args) throws Exception {
    // Create the HTTP server and listen on port 8182
    new Server(Protocol.HTTP, 8182, FirstServerResource.class).start();
    }

    @Get
    public String toString() {
    return "hello, world";
    }

    }

    查看 Restlet Web Site有关 ReSTLets 框架的更多信息和示例。 ReSTLets 的学习曲线比 Spring 略少,因为它是针对 REST 的;因此,它不包含 Spring 附带的所有额外功能,这些功能有时会使寻找问题的答案变得困难。如果您正在寻找轻量级的东西,ReSTLet 绝对是您的最佳选择。

    这两个框架都将在 Tomcat、Jetty 以及 Google App Engine 上运行。

    关于web-services - 有什么好的开源 REST Web 服务技术?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4900161/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com