如何在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
相关产品推荐
相关产品推荐

