簡體   English   中英

如何在 Java Spring Boot 中訪問第三方 API 數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM