TIPS
- url path (오타, 실제 경로) 확인
- sql parameterType, resultType 다시 확인
- testapi 따로 구현해서 테스트 환경 구성
POST
Client Rest
JS Call
addBBSKeyword: (keyword) => {
var self = this;
$.ajax({
url: `/addObject.do`,
data: JSON.stringify({
userId : userId,
keyword : keyword
}),
type: "POST",
dataType: "json",
contentType: "application/json; UTF-8",
beforeSend: function() {
$('.loading').show();
}
}).done(function(rs) {
$('.loading').hide();
}).fail(function(jqXHR, textStatus, errorThrown) {
$('.loading').hide();
}).always(function() {
})
},
Controller
public class RestController {
private final RestService restService;
@PostMapping(addCVAll)
public ResponseEntity<String> addCVAll(HttpServletRequest request, HttpServletResponse response,
@RequestBody HashMap<String, Object> params) {
log.debug(" == addObject.do START ==");
log.debug("params :: ==> {}", params.toString());
return new ResponseEntity<>(restService.addObject(params), HttpStatus.OK);
}
}
Service
@Service
public class RestServiceImpl extends BaseService implements RestService{
@Value("${gateway.yml.category.addObject}")
private String addObject;
@Override
public String addObject(HashMap<String, Object> params) {
return postUniRestJson(getUrl(gatewayHost,addObject), params);
}
}
Host API
Controller
@Slf4j
@Controller
@RequiredArgsConstructor
public class RestController {
private final RestService restService;
final static String addObject = "/addObject.do";
@PostMapping(value = addObject)
public @ResponseBody Map<String, Object> addObject( Locale locale, Model model,
@RequestBody Map<String, Object> param) {
Map<String, Object> resultMap = null;
try {
service.addObject(param);
} catch (Exception e) {
e.printStackTrace();
resultMap = new HashMap<>();
resultMap.put(CommonConstants.RETCODE, CommonConstants.FAIL);
resultMap.put(CommonConstants.RETMSG, "서버오류(" + e.getMessage() + ")");
resultMap.put(CommonConstants.DATA, new ArrayList<Map<String, String>>());
}
return resultMap;
}
}
ServiceImpl
@Slf4j
@Service
public class RestServiceImpl implements RestService {
@Autowired
RestDao dao;
public int addCVAll(Map<String, Object> params) throws Exception {
int status = 0;
String userId = params.get("USER_ID");
UserInfo userInfo = commonDao.getUserInfo(userId);
if (userInfo == null) {
throw new Exception("User does not exist.(" + userId + ")");
}
int status = dao.addObject(userId);
}
}
Dao
@Repository
public class RestDao {
@Autowired
private SqlSessionTemplate sqlSession;
public int addObject(Map<String, Object> param) {
return sqlSession.insert("NAMESPACE.addObject", param);
}
}
SQL
<insert id="addObject" parameterType="java.util.Map">
INSERT INTO data.TABLE
(
USER_ID,
KEYWORD,
REG_DATE
)
VALUES
(
#{userId},
#{keyword},
now()
)
</insert>
GET
Client Rest
JS Call
getObject: (keyword) => {
console.log('getObject Start')
$.ajax({
url: `/getObject.do`,
data: {
keyword : keyword
},
type: "GET",
dataType: "json",
contentType: "application/json",
beforeSend: function() {
$(".loader").show();
}
}).done(function(rs) {
if (rs.retCode === "FAIL") {
return;
}
Object.objectList = rs.data;
}).fail(function(jqXHR, textStatus, errorThrown) {
}).always(function() {
$(".loader").hide();
});
},
Controller
public class RestController {
private final RestService restService;
final static String searchTerms = "/mariner/getBBSAllKeyword.do";
@ResponseBody
@GetMapping(getObject)
public ResponseEntity<String> getObject(HttpServletRequest request, HttpServletResponse response,
@RequestParam String searchTerms) {
HashMap<String, Object> params = new HashMap<String, Object>();
log.debug(" == getObject.do START ==");
log.debug(" == searchTerms ==", searchTerms);
params.put("searchTerms", searchTerms);
return new ResponseEntity<>( (String)restService.getObject(params), HttpStatus.OK);
}
}
Service
@Service
public class RestServiceImpl extends BaseService implements RestService{
@Value("${gateway.yml.category.getObject}")
private String getObjectUri;
@Override
public String getObject(HashMap<String, Object> params) {
return getUniRestJson(getUrl(gatewayHost,getObjectUri), params);
}
}
Host API
Controller
@Slf4j
@Controller
@RequiredArgsConstructor
public class RestController {
private final RestService restService;
final static String getObject = "/getObject.do";
@PostMapping(value = getObject)
public @ResponseBody Map<String, Object> getObject( Locale locale, Model model,
@RequestParam(required = false) String keyword) {
Map<String, Object> resultMap = new HashMap<>();
Map<String, Object> dataMap = new HashMap<>();
try {
dataMap.put("object", service.getObject(keyword));
} catch (Exception e) {
e.printStackTrace();
resultMap = new HashMap<>();
resultMap.put(CommonConstants.RETCODE, CommonConstants.FAIL);
resultMap.put(CommonConstants.RETMSG, "서버오류(" + e.getMessage() + ")");
resultMap.put(CommonConstants.DATA, new ArrayList<Map<String, String>>());
}
resultMap.put(CommonConstants.DATA, dataMap);
resultMap.put(CommonConstants.RETCODE, CommonConstants.OK_STATUS);
resultMap.put(CommonConstants.RETMSG, CommonConstants.SUCCESS);
return resultMap;
}
}
ServiceImpl
@Slf4j
@Service
public class RestServiceImpl implements RestService {
@Autowired
RestDao dao;
public List<Object> getObject(Map<String, Object> params) throws Exception {
String userId = params.get("userId");
UserInfo userInfo = commonDao.getUserInfo(userId);
if (userInfo == null) {
throw new Exception("User does not exist.(" + userId + ")");
}
return dao.getObject(params);
}
}
Dao
@Repository
public class RestDao {
@Autowired
private SqlSessionTemplate sqlSession;
public List<Object> getObject(Map<String, Object> param) {
return sqlSession.selectList("NAMESPACE.getObject", param);
}
}
SQL
<select id="getObject" parameterType="String" resultType="hashmap">
SELECT
SEQ ,
USER_ID,
KEYWORD,
REG_DATE
FROM
data.TABLE
WHERE USER_ID = #{userId}
</select>
Common Methods
protected String postUniRestJson(String url, Map<String, Object> parameters) {
HttpResponse<JsonNode> response = null;
ObjectMapper objectMapper = new ObjectMapper();
try {
response = Unirest.post(url)
.header("content-type", "application/json")
.body(objectMapper.writeValueAsString(parameters))
.asJson();
return response.getBody().toString();
} catch (UnirestException | JsonProcessingException e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}
}
protected String getUniRestJson(String url, Map<String, Object> parameters) {
HttpResponse<JsonNode> response = null;
try {
response = Unirest.get(url).queryString(parameters).asJson();
return response.getBody().toString();
} catch (UnirestException e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}
}
Host API Test (postman)
GET
POST