https://greed-yb.tistory.com/235
해당 글의 GSON 이용
- Spring Boot
- Mybatis
- Gradle
- IntelliJ Ultimate
Controller
@RestController
public class RestApiController {
@Autowired
private RestApiService service;
@GetMapping("/api/device")
public String apiDevice(HttpServletRequest request , HttpServletResponse response) throws Exception {
// PasswordEncoder 로 변환시킨 key 값 - api 인증 key 로 사용
String apiKey = "$2a$10$lFfvF1DBf/1XFcCYt7n1m.dTQlKY4sDNeoIwzRbV.bhCyN51.qK";
// header에 들어올 api key 값
String key = request.getHeader("x-api-key");
// 사용자가 header 에 넣은 값과 api 값이 같다면
if (apiKey.equals(key)) {
List<DeviceVo> deviceVo = service.deviceList();
List<ZoneVo> zoneVo = service.zoneList();
// Gson gson = new Gson();
// json 보기 편하게 정렬
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String deviceJson = gson.toJson(deviceVo);
String zoneJson = gson.toJson(zoneVo);
JsonParser jp = new JsonParser();
JsonElement deviceJe = jp.parse(deviceJson);
JsonElement zoneJe = jp.parse(zoneJson);
// device와 zone을 같이 보내기 위한 object
JsonObject obj = new JsonObject();
obj.add("device", deviceJe);
obj.add("zone", zoneJe);
//한 종류의 데이터만 보내려면 object에 넣지 않고 gson.toJson() 에 넣어도 가능
String prettyJsonString = gson.toJson(obj);
System.err.println(prettyJsonString);
return prettyJsonString;
}else {
// apikey가 맞지 않다면 400에러와 함께 오류 문구 return
response.setStatus(400);
return "API KEY ERROR";
}
}
}
Console 결과
{
"device": [
{
"deviceId": 1,
"deviceName": "장치이름",
....
....
....
....
}
],
"zone": [
{
"testId": 1,
"testName": "시설",
....
....
....
....
}
]
}
console에 찍히는 결과값
Postman 으로 테스트
header 에 x-api-key 를 key로 넣고
Value 에 Controller 에서 지정한 값을 넣어서 전송하면
아래 하단 처럼 status 200과 json 값이 출력된다
API KEY 와 Postman을 사용하지 않고 테스트
Controller 단에서 apikey와 header 의 값을 비교하는 구문을 빼버리고
url에 localhost:8080/api/device 로 들어가면
화면에 json 데이터가 출력된다
특정 값만 조회하는 형식이 아니라
전체 데이터를 다 가져오게 코드를 구성하였으니
특정 값이 필요할 경우 조회 값만 받아서 쿼리를 변경하면 된다
'개발 > Java' 카테고리의 다른 글
[JAVA] CPU , Memory , Disk 사용량 확인하기 (0) | 2024.07.09 |
---|---|
[JAVA] 파일 생성, 삭제, 쓰기, 이름변경, 이동, 복사, 읽기 하기 (1) | 2024.05.21 |
[Java] JDBC Connection - 자바와 DB 연결하기 (0) | 2023.06.08 |
[Java] 단방향 암호화 하기 - SHA256 (0) | 2023.05.26 |
[Java] cURL - ProcessBuilder 사용하기 (0) | 2023.05.24 |
댓글