Loading...
Loading...
Compare original and translation side by side
ApplicationAbstractApplication@ActionContextBuilderapplication.propertiesbin/dispatcherApplicationManager.init()AbstractApplicationApplication@ActionContextBuilderapplication.propertiesApplicationManager.init()bin/dispatcher@ActionAbstractApplicationinit()ContextActionRegistryBuilderApplicationManagerbin/dispatcher@ActionAbstractApplicationinit()ContextActionRegistryBuilderApplicationManagerbin/dispatcherpublic class MyService extends AbstractApplication {
@Override
public void init() {
this.setTemplateRequired(false); // Disable .view lookup for data/API apps
}
@Override public String version() { return "1.0.0"; }
@Action("greet")
public String greet() {
return "Hello from tinystruct!";
}
}public class MyService extends AbstractApplication {
@Override
public void init() {
this.setTemplateRequired(false); // 为数据/API应用禁用.view文件查找
}
@Override public String version() { return "1.0.0"; }
@Action("greet")
public String greet() {
return "Hello from tinystruct!";
}
}// Handles /api/user/123 (Web) or "bin/dispatcher api/user/123" (CLI)
@Action("api/user/(\\d+)")
public String getUser(int userId) {
return "User ID: " + userId;
}// 处理/api/user/123(Web)或"bin/dispatcher api/user/123"(CLI)
@Action("api/user/(\\d+)")
public String getUser(int userId) {
return "User ID: " + userId;
}@Action(value = "login", mode = Mode.HTTP_POST)
public boolean doLogin() {
// Process login logic
return true;
}@Action(value = "login", mode = Mode.HTTP_POST)
public boolean doLogin() {
// 处理登录逻辑
return true;
}@Action("api/data")
public Builder getData() throws ApplicationException {
Builder builder = new Builder();
builder.put("status", "success");
Builder nested = new Builder();
nested.put("id", 1);
nested.put("name", "James");
builder.put("data", nested);
return builder;
}@Action("api/data")
public Builder getData() throws ApplicationException {
Builder builder = new Builder();
builder.put("status", "success");
Builder nested = new Builder();
nested.put("id", 1);
nested.put("name", "James");
builder.put("data", nested);
return builder;
}src/main/resources/application.propertiesundefinedsrc/main/resources/application.propertiesundefinedundefinedundefinedActionRegistry@Test
void testActionRegistration() {
Application app = new MyService();
app.init();
ActionRegistry registry = ActionRegistry.getInstance();
assertNotNull(registry.get("greet"));
}ActionRegistry@Test
void testActionRegistration() {
Application app = new MyService();
app.init();
ActionRegistry registry = ActionRegistry.getInstance();
assertNotNull(registry.get("greet"));
}| Symptom | Correct Pattern |
|---|---|
Importing | Use |
| Call |
Annotating | Actions must be |
Hardcoding | Use |
Manual | Prefer the |
| 症状 | 正确模式 |
|---|---|
导入 | 使用 |
出现 | 在仅API应用的 |
为 | 操作必须是 |
在应用中硬编码 | 将 |
手动注册 | 优先使用 |
references/Builderreferences/Buildersrc/main/java/org/tinystruct/AbstractApplication.javasrc/main/java/org/tinystruct/system/annotation/Action.javasrc/main/java/org/tinystruct/application/ActionRegistry.javasrc/main/java/org/tinystruct/data/component/Builder.javasrc/main/java/org/tinystruct/AbstractApplication.javasrc/main/java/org/tinystruct/system/annotation/Action.javasrc/main/java/org/tinystruct/application/ActionRegistry.javasrc/main/java/org/tinystruct/data/component/Builder.java