返回资讯中心
外部精选
软件工程
#开发者实时流

Graftcode 推出替代 REST 的方案,公开方法可直接远程调用

来源标题:Curious What Replaces REST?

Graftcode 提出一种不依赖 HTTP 契约的 API 方式,把普通公开方法直接变成强类型客户端,并在服务间远程调用。它无需维护路由、DTO、状态码和集成代码,类型定义会随包自动刷新,避免 OpenAPI 规范与代码生成步骤产生漂移。改变 API 时只需修改或新增公开方法并刷新包,不用做连锁更新。

Hacker News 最新graftcodecom2026/11/4 · 今天9 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

REST 到处都能用,但它把你的 API 绑死在 HTTP 路由、方法、状态码、控制器和 DTO 上。Graftcode 则把普通的 public 方法直接变成强类型客户端,不依赖任何 HTTP 特有的东西。

REST 让 HTTP 成了 API 的通用契约。Graftcode 则让普通的 public 方法以前所未有的方式跨服务直接调用。

REST 把 API 绑在 HTTP 契约和集成代码上。Graftcode 能让任意技术栈之间的普通 public 方法互联互通,通信通道可以随意替换,也没有需要维护的集成代码。

REST 要求你把代码绑定到路由、DTO 和 HTTP 状态码上。用 Graftcode,你只需写一个 public 方法,它就能被几乎任何技术远程调用。没有比这更简单的了。

REST 在线路上是强类型的;但真正的类型意味着要有一份 OpenAPI 规范,还要有一个会逐渐失配的代码生成步骤。Graftcode 交付的是一个带类型的 Graft,会自动刷新。

用 REST,改一个 API 可能意味着要改控制器、路由、DTO 和客户端。用 Graftcode,你只需修改或新增一个 public 方法,刷新一下包,然后像调用本地函数一样远程调用它。不会在集成层引发连锁更新。

取一个用户——REST 的一堆管道代码 vs 一次直接的带类型调用。

[ApiController] public class UsersController : ControllerBase { [HttpGet("/users/{id}")] public ActionResult<UserDto> Get(int id) => _db.Find(id).ToDto(); 2 client:fetch 请求 + 处理状态码 + 定义 DTO interface UserDto { id: number; name: string; email: string; async function getUser(id: number): Promise<UserDto> { const response = await fetch(/api/users/${id}, { method: "GET", headers: { Accept: "application/json", }); if (response.status === 404) { throw new Error("User not found"); if (!response.ok) { throw new Error(HTTP ${response.status}); return (await response.json()) as UserDto; const user = await getUser(42); GRAFTCODE 1 暴露一个类 public class UserService { public User GetUser(int id) => _db.Find(id); 2 安装 Graft 并调用 from acme_user_service import UserService user = UserService.get_user(42) 同样的调用,完整的类型。REST 需要一个控制器、一个 DTO 和一个客户端——Graftcode 只需要一个方法。

REST 支持面很广,但它把 API 绑在 HTTP 特有的契约、路由、DTO 和状态码上。Graftcode 为公共 API 和内部服务都去掉了这些约束。你只需暴露普通的 public 方法,让调用方通过他们现有的包管理器安装一个强类型客户端。不需要特殊 SDK、许可证,也不需要共享代码库。同一批方法可以跨语言、跨通信通道访问,实现无需改动。

很多开发者都喜欢 Graftcode 以及它带来的东西。

“Graftcode 看起来是一个异常实用的平台。它的核心价值在于让开发者能专注于核心业务需求,而不是繁琐的服务集成工作。我相信‘先从单体结构起步,再按需动态过渡到微服务架构’这一理念会被证明极具价值。”

GitHub 在 GitHub 上开始并参与这个项目。 加入

LinkedIn 在 LinkedIn 上与我们联系。 加入

Discord 在 Discord 上加入讨论。 加入

跳过控制器。直接调用方法。

暴露一个类,安装 Graft,大约 10 分钟就能完成你的第一次带类型的跨服务调用。

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →