package asmanager.rest.v1;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.PUT;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.SecurityContext;
import system.db.UserlogSQL;
import system.rest.v1.RestStatusV1;
import java.security.Principal;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import com.fasterxml.jackson.databind.node.ObjectNode;
import asmanager.db.TenantSQL;
@Path("tenant.rest")
public class Tenant {
@Context
private HttpServletRequest servletRequest;
@Context
private SecurityContext securityContext;
private final ObjectMapper mapper = new ObjectMapper();
/**取得Tenant設定*/
@GET
@Produces(MediaType.APPLICATION_JSON)
public String threshold(@QueryParam("offset") int offset,@QueryParam("size") int size) {
String userName = null;
String result = "Failure";
Principal pp = securityContext.getUserPrincipal();
if(pp!=null){
userName = pp.getName();
}
int code = RestStatusV1.ARGUERR;
String data = null;
if(size==0){
size = 10;
}
try {
ArrayNode rows = JsonNodeFactory.instance.arrayNode();
long totalsize = TenantSQL.setData(rows,offset,size);
data = ",\"totalsize\":"+totalsize+",\"data\":"+rows.toString();
result = "Success";
code = RestStatusV1.SUCCESS;
} catch (Exception e) {
e.printStackTrace();
}
UserlogSQL.saveLog(userName, servletRequest.getRemoteAddr(), "menu.tenant", "API", result,
"/system/rest/v1/tenant.rest query offset="+offset+", size="+size+", data="+data);
return RestStatusV1.returnMessage(code, data);
}
}
@annotation 說明:
說明:
一、@Produces
@Produces(MediaType.APPLICATION_JSON)
@Produces({"image/jpeg,image/png"})
@Produces("text/plain")
@Produces({"application/xml", "application/json"})
註釋用於指定資源可以生成並發送回客戶端的 MIME 媒體類型或表示。如果@Produces在類級別應用,則資源中的所有方法都可以默認生成指定的 MIME 類型。如果在方法級別應用,註釋將覆蓋@Produces在類級別應用的任何註釋。
二、@Consumes
@Consumes(MediaType.APPLICATION_JSON)
@Consumes({"text/plain,text/html"})
@Consumes("multipart/related")
@Consumes("application/x-www-form-urlencoded")
註釋用於指定資源可以從客戶端接受或使用的表示的 MIME 媒體類型。如果@Consumes在類級別應用,則默認情況下所有響應方法都接受指定的 MIME 類型。如果在方法級別應用,則@Consumes覆蓋在類級別應用的任何@Consumes註釋。
```
@Path("/myResource")
@Consumes("multipart/related")
public class SomeResource {
@POST
public String doPost(MimeMultipart mimeMultipartData) {
...
}
@POST
@Consumes("application/x-www-form-urlencoded")
public String doPost2(FormURLEncodedProperties formData) {
...
}
}
```
三、@QueryParam("size") int size
主要通過鍵值對這樣取 如 a=1, QueryParam("a")
如 localhost:8080/introduction?booId=1?gg=2?version=3?platform=4?vps=5
此時我們就用QueryParam,通過@QueryParam("bookId"),Integer bookId 實際代碼如下
Response introduction(@QueryParam("booId) Integer,.......){}
四、@PathParam
傳參就應該為 localhost:8080/introduction/1/2/3/4/5
對應下麵的 /{bookId}/{gg}/{version}/{plarform}/{vps}
Response introduction(@PathParam("booId) Integer,.......){}
留言列表