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,.......){}

arrow
arrow
    文章標籤
    restapi java
    全站熱搜
    創作者介紹
    創作者 jbuduoo 的頭像
    jbuduoo

    程式員:告一個段落才能睡的好。

    jbuduoo 發表在 痞客邦 留言(0) 人氣()