- 将JobApiController从controller.openapi包移动到scheduler.openapi包
- 更新包声明和导入语句以反映新的包结构- 移除显式的@RequestMapping("/api")注解,将其合并到方法级别
- 简化导入语句,使用通配符导入替代多个单独导入- 修改api方法参数,增加对访问令牌的请求头验证
- 在api方法中添加requestBody空值检查
3.3.0-release
parent
75e3caf672
commit
cd71a1896f
@ -1,72 +0,0 @@
|
||||
package com.xxl.job.admin.controller.openapi;
|
||||
|
||||
import com.xxl.job.admin.scheduler.config.XxlJobAdminBootstrap;
|
||||
import com.xxl.job.core.biz.AdminBiz;
|
||||
import com.xxl.job.core.biz.model.HandleCallbackRequest;
|
||||
import com.xxl.job.core.biz.model.RegistryRequest;
|
||||
import com.xxl.job.core.biz.model.ReturnT;
|
||||
import com.xxl.job.core.util.XxlJobRemotingUtil;
|
||||
import com.xxl.sso.core.annotation.XxlSso;
|
||||
import com.xxl.tool.core.StringTool;
|
||||
import com.xxl.tool.gson.GsonTool;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by xuxueli on 17/5/10.
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping("/api")
|
||||
public class JobApiController {
|
||||
|
||||
@Resource
|
||||
private AdminBiz adminBiz;
|
||||
|
||||
/**
|
||||
* api
|
||||
*
|
||||
* @param uri
|
||||
* @param data
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/{uri}")
|
||||
@ResponseBody
|
||||
@XxlSso(login = false)
|
||||
public ReturnT<String> api(HttpServletRequest request, @PathVariable("uri") String uri, @RequestBody(required = false) String data) {
|
||||
|
||||
// valid
|
||||
if (!"POST".equalsIgnoreCase(request.getMethod())) {
|
||||
return ReturnT.ofFail("invalid request, HttpMethod not support.");
|
||||
}
|
||||
if (StringTool.isBlank(uri)) {
|
||||
return ReturnT.ofFail("invalid request, uri-mapping empty.");
|
||||
}
|
||||
if (StringTool.isNotBlank(XxlJobAdminBootstrap.getInstance().getAccessToken())
|
||||
&& !XxlJobAdminBootstrap.getInstance().getAccessToken().equals(request.getHeader(XxlJobRemotingUtil.XXL_JOB_ACCESS_TOKEN))) {
|
||||
return ReturnT.ofFail("The access token is wrong.");
|
||||
}
|
||||
|
||||
// services mapping
|
||||
if ("callback".equals(uri)) {
|
||||
List<HandleCallbackRequest> callbackParamList = GsonTool.fromJson(data, List.class, HandleCallbackRequest.class);
|
||||
return adminBiz.callback(callbackParamList);
|
||||
} else if ("registry".equals(uri)) {
|
||||
RegistryRequest registryParam = GsonTool.fromJson(data, RegistryRequest.class);
|
||||
return adminBiz.registry(registryParam);
|
||||
} else if ("registryRemove".equals(uri)) {
|
||||
RegistryRequest registryParam = GsonTool.fromJson(data, RegistryRequest.class);
|
||||
return adminBiz.registryRemove(registryParam);
|
||||
} else {
|
||||
return ReturnT.ofFail("invalid request, uri-mapping("+ uri +") not found.");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,80 @@
|
||||
package com.xxl.job.admin.scheduler.openapi;
|
||||
|
||||
import com.xxl.job.admin.scheduler.config.XxlJobAdminBootstrap;
|
||||
import com.xxl.job.core.biz.AdminBiz;
|
||||
import com.xxl.job.core.biz.model.HandleCallbackRequest;
|
||||
import com.xxl.job.core.biz.model.RegistryRequest;
|
||||
import com.xxl.job.core.biz.model.ReturnT;
|
||||
import com.xxl.job.core.util.XxlJobRemotingUtil;
|
||||
import com.xxl.sso.core.annotation.XxlSso;
|
||||
import com.xxl.tool.core.StringTool;
|
||||
import com.xxl.tool.gson.GsonTool;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by xuxueli on 17/5/10.
|
||||
*/
|
||||
@Controller
|
||||
public class JobApiController {
|
||||
|
||||
@Resource
|
||||
private AdminBiz adminBiz;
|
||||
|
||||
/**
|
||||
* api
|
||||
*/
|
||||
@RequestMapping("/api/{uri}")
|
||||
@ResponseBody
|
||||
@XxlSso(login = false)
|
||||
public ReturnT<String> api(HttpServletRequest request,
|
||||
@PathVariable("uri") String uri,
|
||||
@RequestHeader(XxlJobRemotingUtil.XXL_JOB_ACCESS_TOKEN) String accesstoken,
|
||||
@RequestBody(required = false) String requestBody) {
|
||||
|
||||
// valid
|
||||
if (!"POST".equalsIgnoreCase(request.getMethod())) {
|
||||
return ReturnT.ofFail("invalid request, HttpMethod not support.");
|
||||
}
|
||||
if (StringTool.isBlank(uri)) {
|
||||
return ReturnT.ofFail("invalid request, uri-mapping empty.");
|
||||
}
|
||||
if (StringTool.isBlank(requestBody)) {
|
||||
return ReturnT.ofFail("invalid request, requestBody empty.");
|
||||
}
|
||||
|
||||
// valid token
|
||||
if (StringTool.isNotBlank(XxlJobAdminBootstrap.getInstance().getAccessToken())
|
||||
&& !XxlJobAdminBootstrap.getInstance().getAccessToken().equals(accesstoken)) {
|
||||
return ReturnT.ofFail("The access token is wrong.");
|
||||
}
|
||||
|
||||
// dispatch request
|
||||
try {
|
||||
switch (uri) {
|
||||
case "callback": {
|
||||
List<HandleCallbackRequest> callbackParamList = GsonTool.fromJson(requestBody, List.class, HandleCallbackRequest.class);
|
||||
return adminBiz.callback(callbackParamList);
|
||||
}
|
||||
case "registry": {
|
||||
RegistryRequest registryParam = GsonTool.fromJson(requestBody, RegistryRequest.class);
|
||||
return adminBiz.registry(registryParam);
|
||||
}
|
||||
case "registryRemove": {
|
||||
RegistryRequest registryParam = GsonTool.fromJson(requestBody, RegistryRequest.class);
|
||||
return adminBiz.registryRemove(registryParam);
|
||||
}
|
||||
default:
|
||||
return ReturnT.ofFail("invalid request, uri-mapping("+ uri +") not found.");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
return ReturnT.ofFail("openapi invoke error: " + e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in new issue