MetaMessage 改變 Web 生態

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: MetaMessage是AI时代的统一序列化协议,支持12种主流语言,实现跨语言数据结构一致。其Go Web框架(mm-web-go)无缝集成Gin/Echo/Fiber等,提供自动Schema发现、类型安全编解码与泛型路由,大幅提升API开发效率与可靠性。(239字)

MetaMessage 改變 Web 生態

截屏2026-06-11 12.08.00.png

MetaMessage已經支持了c、c++、c#、golang、python、rust、php、swift、kotlin、java、typescript、javascript等語言,這些語言之間的數據結構一致、語意相同、數值相等,具有統一結構化數據序列化/反序列化協議的趨勢。成為ai時代的終極協議。

下面介紹下MetaMessage載golang web 開發中的實踐:

github項目:metamessage/mm-web-go

這個項目為gin、echo、fiber、chi、net/http原生提供了支持,可以方便地使用MetaMessage進行編解碼。

Schema 發現

服務端的泛型路由(GET/POST/PUT/DELETE/PATCH)會自動註冊 OPTIONS 端點用於 Schema 發現。OPTIONS 響應會返回一個 MetaMessage 編碼的結構體實例,其中包含完整的類型、約束條件與描述元數據。

客戶端在發送實際請求前,會自動利用此機制進行請求驗證:

客戶端                          服務端
  │                               │
  ├── OPTIONS /api/v1/users ──────►
  │◄──── MetaMessage Schema ──────┤
  │     (struct definition)       │
  │                               │
  ├── POST /api/v1/users ────────►
  │◄──── MetaMessage Response ────┤

服務端

非常簡單,返回的結構會自動註冊。所有框架提供完全一致的泛型路由註冊 API,handler 簽名統一為 func(ctx, *T) (any, string, error)

net/http原生

import server "github.com/metamessage/mm-web-go/mmvanilla"

mux := http.NewServeMux()
server.Init(mux, "/api/v1")

server.GET("/users", func(r *http.Request, req *any) (any, string, error) {
   
    return ListUsersResponse{
   ...}, "", nil
})
server.POST("/users", func(r *http.Request, req *CreateUserRequest) (any, string, error) {
   
    return UserResponse{
   ...}, "", nil
})

Gin

import "github.com/gin-gonic/gin"
import server "github.com/metamessage/mm-web-go/mmgin"

r := gin.Default()
server.Init(r, "/api/v1")

// 泛型路由:自動綁定 + OPTIONS Schema 發現
server.GET("/users", func(c *gin.Context, req *any) (any, string, error) {
   
    return ListUsersResponse{
   ...}, "", nil
})
server.GET("/users/:id", func(c *gin.Context, req *any) (any, string, error) {
   
    return APIResponse{
   ...}, "", nil
})
server.POST("/users", func(c *gin.Context, req *CreateUserRequest) (any, string, error) {
   
    return UserResponse{
   ...}, "", nil
})
server.PUT("/users/:id", func(c *gin.Context, req *UpdateUserRequest) (any, string, error) {
   
    return APIResponse{
   ...}, "", nil
})
server.DELETE("/users/:id", func(c *gin.Context, req *any) (any, string, error) {
   
    return APIResponse{
   ...}, "", nil
})

Echo

import "github.com/labstack/echo/v4"
import server "github.com/metamessage/mm-web-go/mmecho"

e := echo.New()
server.Init(e, "/api/v1")

server.GET("/users", func(c echo.Context, req *any) (any, string, error) {
   
    return ListUsersResponse{
   ...}, "", nil
})
server.POST("/users", func(c echo.Context, req *CreateUserRequest) (any, string, error) {
   
    return UserResponse{
   ...}, "", nil
})

Fiber

import "github.com/gofiber/fiber/v2"
import server "github.com/metamessage/mm-web-go/mmfiber"

app := fiber.New()
server.Init(app, "/api/v1")

server.GET("/users", func(c *fiber.Ctx, req *any) (any, string, error) {
   
    return ListUsersResponse{
   ...}, "", nil
})
server.POST("/users", func(c *fiber.Ctx, req *CreateUserRequest) (any, string, error) {
   
    return UserResponse{
   ...}, "", nil
})

Chi

import "github.com/go-chi/chi/v5"
import server "github.com/metamessage/mm-web-go/mmchi"

r := chi.NewRouter()
server.Init(r, "/api/v1")

server.GET("/users", func(r *http.Request, req *any) (any, string, error) {
   
    return ListUsersResponse{
   ...}, "", nil
})
server.POST("/users", func(r *http.Request, req *CreateUserRequest) (any, string, error) {
   
    return UserResponse{
   ...}, "", nil
})

數據綁定

框架推薦使用post/put/patch等使用body的請求方法,攜帶二進制數據更方便。

同時對get/delete等只支持url的請求方式做了兼容,使用 ?data=<hex> 攜帶數據

Bind

將請求體綁定到結構體(自動檢測格式):

var user User
if err := mmgin.Bind(c, &user); err != nil {
   
    // 處理錯誤
}

BindQuery

將查詢參數綁定到結構體(從 ?data=<hex> 讀取 MetaMessage 編碼數據):

var filter Filter
if err := mmgin.BindQuery(c, &filter); err != nil {
   
    // 處理錯誤
}

客戶端

以類型安全的請求/響應執行泛型請求。會自動先發送 OPTIONS 預檢請求驗證 Schema

當然這個工作可以交給框架,不需要多寫代碼

resp, err := client.DoRequest[CreateUserRequest, UserResponse](
    c, "POST", "/api/v1/users", req,
)

便捷函數

使用默認客戶端的包級別便捷函數:

client.GET[any, ListUsersResponse]("/api/v1/users", nil)
client.POST[CreateUserRequest, UserResponse]("/api/v1/users", req)
client.PUT[UpdateUserRequest, APIResponse]("/api/v1/users/1", req)
client.DELETE[any, APIResponse]("/api/v1/users/1", nil)
client.PATCH[UpdateUserRequest, APIResponse]("/api/v1/users/1", req)
目录
相关文章
|
27天前
|
人工智能 自然语言处理 物联网
阿里云百炼大模型服务平台模型部署指南:流程与常见问题
阿里云百炼大模型部署流程参考,涵盖三种计费方式(预置吞吐PTU、模型单元、Token用量)的对比与适用场景,本文说明了各计费模式的费用计算、扩缩容规则及产品约束。部署后可通过OpenAI兼容接口、DashScope及Assistant SDK调用,并提供了代码示例。文章还解答了自有模型上传、权限不足、计费切换等常见问题。此外,2026年阿里云推出多项AI优惠:Qwen3.7-Max限时5折、HappyHorse视频模型8折、Token Plan多档套餐,以及轻量应用服务器38元/年起等云产品普惠权益,助力用户低成本落地AI应用。
|
2月前
|
JSON JavaScript 前端开发
在TypeScript和JavaScript如何使用MetaMessage?
MetaMessage 是一种跨语言数据交换协议,支持 TypeScript/JavaScript(通过装饰器自动类型转换)、JSONC 文本与紧凑二进制 wire 格式,兼顾可读性、精度(如 bigint 表示 int64)与性能,旨在替代 JSON、Protobuf 等传统序列化方案。
243 125
|
Java Android开发 p3c
Alibaba Java Coding Guidelines安装使用教程
Alibaba Java Coding Guidelines安装使用教程
13505 0
Alibaba Java Coding Guidelines安装使用教程
|
27天前
|
缓存 算法 Go
Go slices.Move 新提案:一次搬动,胜过两次删除插入
本文讲述Go开发者因TODO应用拖拽排序需求,写出低效“笨代码”的反思历程,引出社区提案`slices.Move`——用一次内存移动替代`Delete+Insert`两次复制,填补API空白。它不颠覆理论,却以实用主义提升性能与可读性,彰显Go“简洁而不简陋”的哲学。(239字)
117 1
|
7天前
|
人工智能 Rust 安全
Nolang vs Rust:Match 模式匹配的優雅簡潔之道
Nolang 是面向安全与效率的现代模式匹配语言,通过类型自动包装、延迟Move和扁平化类型推导,根治Rust中Option/Result嵌套、链式维护灾难及强制clone等痛点,在保持同等静态安全前提下,代码量减半、性能更高、学习维护难度仅为Rust的十分之一。(239字)
50 0
|
27天前
|
Web App开发 弹性计算 监控
tk矩阵系统自动化养号实战:Python脚本开发与阿里云部署指南
tk矩阵系统是跨境电商多账号高效管理的核心工具,其自动化养号能力直接决定账号存活率与运营效率。手动管理数十上百个账号不仅耗时耗力,还易因操作规律一致触发平台风控检测。本文基于Python与Selenium技术栈,系统讲解自动化养号脚本的完整开发流程,涵盖多账号隔离、真实行为模拟、设备指纹伪装、异常监控预警及阿里云ECS部署等核心模块,提供1700余行可直接运行的代码。本文仅用于技术学习交流,使用时请严格遵守平台用户协议与相关法律法规。
|
27天前
|
SQL 网络虚拟化 数据中心
信贷审核中如何验证用户地址与IP属地一致性?用IP查询工具实现反欺诈
IP属地与填报地址一致性核验是信贷反欺诈的低成本高实效基础手段。通过比对城市/省份、网络类型(如数据中心IP)、风险分等维度,可有效识别身份盗用、远程代办及团伙欺诈,误拦率低于0.5%,欺诈识别率提升26%。(239字)
|
27天前
|
安全 前端开发 Serverless
基于 Vercel 免费托管平台的网络钓鱼攻击技术与防御研究
本文聚焦Vercel等免费云平台被滥用于网络钓鱼的新威胁,剖析三类真实攻击集群的技术链路,揭示其“AI建站+Serverless回传+Telegram窃密”的标准化模式。指出传统黑名单、静态检测失效,提出动态行为检测、加密流量解析、子域名风险研判等闭环防御方案,兼顾技术落地与人员意识提升。(239字)
170 0
|
27天前
|
JSON 监控 数据挖掘
小红书笔记评论API简明文档(含 JSON 样例)
小红书笔记评论API支持获取主评、楼中楼、用户及互动数据,采用Token鉴权与游标分页(非页码),单页1–50条。含热度/时间排序、置顶标识、子评嵌套等字段,适用于舆情分析、竞品监控与用户反馈采集。(239字)
|
27天前
|
人工智能 自然语言处理 安全
OpenClaw 2.7.9 本地 AI 智能体 Windows 安装部署指南
OpenClaw 2.7.9 是一款本地运行的AI智能体工具,专为Windows设计。支持离线使用、数据隐私安全,提供一键式安装与图形化界面,无需编程基础。可自动执行文件处理、网页操作、软件控制等办公任务,大幅提升效率。(239字)