[英]How to access third party API data in Java Spring Boot
我想問一下如何訪問json(“緯度”,“緯度”)中的字段,以便能夠在瀏覽器中將它們顯示為字符串。
@RestController
@RequestMapping("/api/v1/")
public class ISSTrackerController {
@GetMapping("/location")
public ResponseEntity<String> getISSLocation() {
String uri = "http://api.open-notify.org/iss-now.json";
RestTemplate restTemplate = new RestTemplate();
String result = restTemplate.getForObject(uri, String.class);
return new ResponseEntity<>(result, HttpStatus.OK);
}
}
要從 java 中的響應中獲取數據,您需要創建一些 POJO 來獲取響應:
class IssPosition {
private Double latitude;
private Double longitude;
// getters & setters
}
class IssResponse {
// Here the iss_position property in hte response is in cammel case,
// with the @JsonProperty annotation we tell the parser to pass that
// property to the annotated field issPosition
@JsonProperty("iss_position")
private IssPosition issPosition;
private String message;
private Timestamp timestamp;
// getters & setters
}
然后您可以使用RestTemplate
撥打電話
@RestController
@RequestMapping("/api/v1/")
public class ISSTrackerController {
@GetMapping("/location")
public ResponseEntity<String> getISSLocation() {
String uri = "http://api.open-notify.org/iss-now.json";
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<IssResponse> response = restTemplate.getForObject(uri, IssResponse.class);
// We get te response as an IssResponse object
IssResponse result = response.getBody();
// We get the iss_position property so you have access
// to the latitude and longitude fields by
IssPosition position = result.getIssPosition();
// You can just return the position so you have a json like this one:
// { "latitude": "-24.0470", "longitude": "64.0261" }
return new ResponseEntity<>(position, HttpStatus.OK);
}
}
PS:編輯答案以使用來自 RestTemplate 調用的ResponseEntity
中包裝的實際響應。 感謝@OneCricketeer 指出這一點!!!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.