Я новичок в SpringBoot и пытаюсь выполнить требование. Мне просто нужно вызвать API, передав client_id, secret и grant type, это сгенерирует токен, как показано на скриншоте ниже. Мне просто нужно получить это значение токена.
введите описание изображения здесь
Я создал POJO на основе ответа API.
TokenReqPOJO. java:
public class TokenReqPOJO {
private String access_token;
private String token_type;
private int expires_in;
@Override
public String toString() {
return "ClassPojo [access_token = " + access_token + ", token_type = " + token_type + ", expires_in = "
+ expires_in + "]";
}
public String getAccess_token() {
return access_token;
}
public void setAccess_token(String access_token) {
this.access_token = access_token;
}
public String getToken_type() {
return token_type;
}
public void setToken_type(String token_type) {
this.token_type = token_type;
}
public int getExpires_in() {
return expires_in;
}
public void setExpires_in(int expires_in) {
this.expires_in = expires_in;
}
}
POJO выше поможет получить токен из тела ответа.
Теперь у меня два вопроса:
- Как построить URI в нужном формате? Как указано на скриншоте ниже, URI будет состоять из 3 частей: конечная точка + ресурс + параметры
- Как сопоставить код ответа и получить значения из тела ответа?
I начали с кода ниже, но не смогли продолжить.
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
@RestController
public class TokenAPI {
private static final Logger logger = LogManager.getLogger(TokenAPI.class);
@Value("${TOKEN_CLIENT_SEC_PARAM_VALUE}")
private String TOKEN_CLIENT_SECRET_PARAM_VALUE;
@Value("${TOKEN_CLIENT_ID_PARAM_VALUE}")
private String TOKEN_CLIENT_ID_PARAM_VALUE;
@Value("${TOKEN_GRANT_TYPE_PARAM_VALUE}")
private String TOKEN_GRANT_TYPE_PARAM_VALUE;
@Value("${RetryCount}")
private int RetryCount;
@Value("${TOKEN_GEN_API_URL}")
private String TOKEN_GEN_API_URL;
@PostMapping("<?>") //HOW TO PASS FULL URL
public void getAuthToken( ) {
// how to read response , returned by API
// will RestTemplate help?
}
}