You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ballerina服务资源路径中包含短横线等特殊字符?

解决Ballerina中/school/{student-id}端点路径参数问题

错误原因

你代码里的问题是误用反斜杠\转义连字符,这在Ballerina语法中不被允许,因此触发Invalid character: '\' in expression错误。Ballerina对含特殊字符(比如连字符)的标识符有专属处理规则。

修正后的代码

service /school on new http:Listener(9000) {
    // 用单引号包裹带连字符的路径参数名
    resource function get student/[string 'student-id]() returns Student? {
        // 引用参数时同样用单引号包裹
        return studentTable['student-id];
    }
}

public type Student record {|
    // 记录字段带连字符,用单引号包裹
    readonly string 'student-id;
    string name;
    int age;
|};

public final table<Student> key('student-id) studentTable = table [
    // 初始化记录时字段名加单引号
    {'student-id: "333X", name: "Ross", age: 15},
    {'student-id: "465Q", name: "Kyle", age: 16}
];

关键注意事项

  • Ballerina中,当标识符(参数名、记录字段名等)包含连字符这类特殊字符时,必须用**单引号'**包裹,而非反斜杠转义。
  • 路径参数定义[string 'student-id]对应端点路径中的{student-id},代码内统一用'student-id引用该参数。
  • 记录字段定义、表的键配置、记录初始化等场景,只要涉及带连字符的标识符,都需保持单引号包裹的写法。

修改后,端点/school/student/{student-id}即可正常接收请求,根据传入的student-id从表中返回对应学生数据。

内容的提问来源于stack exchange,提问作者LochanaJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 16:29:54