package com.example;
import com.tccc.kos.commons.core.dispatcher.annotations.ApiController;
import com.tccc.kos.commons.core.dispatcher.annotations.ApiEndpoint;
import com.tccc.kos.commons.core.dispatcher.annotations.PathVariable;
import com.tccc.kos.commons.core.dispatcher.annotations.RequestParam;
import java.util.ArrayList;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
@ApiController(base = "/mycontroller", title = "My first KOS REST controller")
public class MyController {
/**
* GET http://localhost:{port}/api/system/mycontroller/ping
* returns: {"status":200,"version":{"major":1,"minor":0},"data":"pong"}
*/
@ApiEndpoint(GET = "/ping", desc = "checks to see if controller is running")
public String ping() {
return "pong";
}
/**
* GET http://localhost:{port}/api/system/mycontroller/dosomething
* returns: {"status":200,"version":{"major":4,"minor":56}}
*/
@ApiEndpoint(GET = "/dosomething", desc = "returns void", version = "4.56")
public void doSomething() {
}
/**
* GET http://localhost:{port}/api/system/mycontroller/bean/17
* returns: {"status":200,"version":{"major":1,"minor":0},"data":{"id":17,"name":"Fred","other":"Flintstone"}}
*/
@ApiEndpoint(GET = "/bean/{id}", desc = "uses path variable and returns an object")
public MyBean getBean(@PathVariable("id") Integer id) {
MyBean myBean = new MyBean(id, "Fred", "Flintstone");
return myBean;
}
/**
* GET http://localhost:{port}/api/system/mycontroller/user/list?order=firstName&limit=10
* passes in: the parameter "order" contains "firstName" and the parameter "limit" is "20"
*/
@ApiEndpoint(GET = "/user/list", desc = "")
public List<MyBean> listUsers(
@RequestParam(value = "order", required = true) String order,
@RequestParam(value = "limit", defaultValue = "20") Integer limit) {
List<MyBean> list = new ArrayList<>(limit);
list.add(new MyBean(1, "Fred", "Foo"));
list.add(new MyBean(2, "Barney", "Bar"));
return list;
}
@Data
@AllArgsConstructor
public static class MyBean {
private int id;
private String name;
private String other;
}
}