- JSP: OpenAPI Spec 모달 처리 개선 - 동적 크기 조절 및 스타일 추가
- Service: GET/DELETE 요청 바디 항목→쿼리 파라미터 매핑 로직 추가 - JS: 요청 정보 진입 시 탭 자동 전환 로직(firstReqTabWithData) 구현
This commit is contained in:
@@ -448,14 +448,24 @@ public class ApiSpecManService {
|
||||
// 헤더/바디 분리
|
||||
RequestComponents components = separateHeaderAndBody(requestLayout.getLayoutItems());
|
||||
|
||||
// 헤더 파라미터 처리
|
||||
if (!components.headerItems.isEmpty()) {
|
||||
boolean bodyRequired = isRequestBodyRequired(httpMethod);
|
||||
|
||||
// 헤더 파라미터 + (POST/PUT 이 아니면) 요청 바디 항목을 쿼리스트링 파라미터로 함께 담는다.
|
||||
boolean hasHeader = !components.headerItems.isEmpty();
|
||||
boolean queryFromBody = !bodyRequired && !components.bodyItems.isEmpty();
|
||||
if (hasHeader || queryFromBody) {
|
||||
ArrayNode parameters = operation.putArray("parameters");
|
||||
generateHeaderParameters(parameters, components.headerItems);
|
||||
if (hasHeader) {
|
||||
generateHeaderParameters(parameters, components.headerItems);
|
||||
}
|
||||
// GET/DELETE 등 바디 미사용 메소드: 요청 레이아웃 바디 항목 → 쿼리 파라미터(in=query)
|
||||
if (queryFromBody) {
|
||||
generateQueryParameters(parameters, components.bodyItems);
|
||||
}
|
||||
}
|
||||
|
||||
// Body 처리 (POST, PUT 메소드인 경우)
|
||||
if (isRequestBodyRequired(httpMethod)) {
|
||||
if (bodyRequired) {
|
||||
ObjectNode requestBody = operation.putObject("requestBody");
|
||||
requestBody.put("required", true);
|
||||
ObjectNode content = requestBody.putObject("content");
|
||||
@@ -561,6 +571,35 @@ public class ApiSpecManService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* GET/DELETE 등 바디 미사용 메소드: 요청 레이아웃 바디 항목을 쿼리스트링 파라미터(in=query)로 매핑.
|
||||
* 스칼라 FIELD 만 대상(GROUP/GRID 중첩 객체·배열은 쿼리스트링에 부적합하여 제외), root(serno 0)는 스킵.
|
||||
*/
|
||||
private void generateQueryParameters(ArrayNode parameters, List<LayoutItemUI> bodyItems) {
|
||||
for (LayoutItemUI item : bodyItems) {
|
||||
if (item.getLoutItemSerno() != null && item.getLoutItemSerno() == 0) {
|
||||
continue;
|
||||
}
|
||||
if (!"FIELD".equalsIgnoreCase(item.getLoutItemType())) {
|
||||
continue;
|
||||
}
|
||||
ObjectNode parameter = parameters.addObject();
|
||||
parameter.put("name", item.getLoutItemName());
|
||||
parameter.put("in", "query");
|
||||
if (StringUtils.isNotEmpty(item.getLoutItemDesc())) {
|
||||
parameter.put("description", item.getLoutItemDesc());
|
||||
}
|
||||
parameter.put("required", false); // 기본값 false, 필요시 사용자가 변경
|
||||
|
||||
ObjectNode schema = parameter.putObject("schema");
|
||||
schema.put("type", mapSwaggerType(item.getLoutItemDataType()));
|
||||
int length = item.getLoutItemLength();
|
||||
if (length > 0) {
|
||||
schema.put("maxLength", length);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void generateResponseHeaders(ObjectNode headers, List<LayoutItemUI> headerItems) {
|
||||
for (LayoutItemUI item : headerItems) {
|
||||
if ("FIELD".equalsIgnoreCase(item.getLoutItemType())) {
|
||||
|
||||
Reference in New Issue
Block a user