如何使用POST
方法将数据检索到数据库中,我创建了一个从外部服务api检索数据的方法-可以显示该方法,但我在创建将检索到的数据发送到数据库的适当方法时遇到了问题。
方法getCurrencyType
从外部api检索数据:
@Component
public class CurrencyClient {
public static final String URL_API_NBP = "http://api.nbp.pl/api/";
private final RestTemplate restTemplate = new RestTemplate();
public CurrencyModelDto getCurrencyType(String value) {
CurrencyDto currencyDto = callGetMethod("exchangerates/rates/a/{currency}/", CurrencyDto.class, value);
return CurrencyModelDto.builder()
.code(currencyDto.getCode())
.mid(currencyDto.getRates().stream().findFirst().get().getMid())
.effectiveDate(currencyDto.getRates().stream().findFirst().get().getEffectiveDate())
.build();
}
private <T> T callGetMethod(String url, Class<T> responseType, Object... objects) {
return restTemplate.getForObject(URL_API_NBP + url,
responseType, objects);
}
}
我准备了一个存储库和一个实体来创建一个数据库(创建了数据库,但没有填充数据)
@NoArgsConstructor
@Entity
@Getter
@Setter
public class Currency {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String code;
private float mid;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate effectiveDate;
}
我目前创建了一个POST方法addMONcy
,但它不允许检索和保存数据(逻辑不好?)。
public class CurrencyController {
private final CurrencyService currencyService
@PostMapping
public void addCurrency(@RequestBody CurrencyModelDto currencyModel) {
Currency currency = new Currency();
currency.setCode(currencyModel.getCode());
currency.setMid(currencyModel.getMid());
currency.setEffectiveDate(currencyModel.getEffectiveDate());
currencyService.save(currency);
}
}
DTO型号:
@Getter
@Builder
public class CurrencyModelDto {
private String code;
private float mid;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate effectiveDate;
}
允许您保存数据的服务。
@Service
@Slf4j
@RequiredArgsConstructor
public class CurrencyService {
private final CurrencyRepository currencyRepository;
public void save(Currency currency) {
currencyRepository.save(currency);
}
}
因此,我有一个问题,就是如何正确地创建一个POST方法,该方法将与getCurrencyType
方法“交互”,并允许我保存从getCurrencyType
方法检索的数据
你的控制器应该是这样的
import java.util.Objects;
@RestController
public class CurrencyController {
private final CurrencyService currencyService;
private final CurrencyClient currencyClient;
public CurrencyController(CurrencyService currencyService, CurrencyClient currencyClient) {
this.currencyService = currencyService;
this.currencyClient = currencyClient;
}
@PostMapping(("/addCurrency/{value}"))
public void addCurrency(@PathVariable String value) {
CurrencyModelDto currencyModelDto = currencyClient.getCurrencyType(value);
if (Objects.nonNull(currencyClient)) {
Currency currency = new Currency();
currency.setCode(currencyModelDto.getCode());
currency.setMid(currencyModelDto.getMid());
currency.setEffectiveDate(currencyModelDto.getEffectiveDate());
currencyService.save(currency);
}
}
}
然后,如果您使用的是maven工具,请运行应用程序
$ mvn spring-boot:run
然后以这种方式使用您的Web服务
$ curl localhost:8080/addCurrency/EUR
注:欧元是欧元的货币名称
问题内容: data = { ‘ids’: [12, 3, 4, 5, 6 , …] } urllib2.urlopen("http://abc.com/api/posts/create”,urllib.urlencode(data)) 我想发送POST请求,但是其中一个字段应该是数字列表。我怎样才能做到这一点 ?(JSON?) 问题答案: 如果您的服务器期望POST请求为json,则您需要添加标
想改进这个问题吗?更新问题,使其仅通过编辑这篇文章来关注一个问题。 我是Spring框架Java新手,我需要一种从我的应用程序调用外部Rest Api的方法。是否有任何“最佳实践”超文本传输协议客户端,以便我可以根据需要使用? 提前感谢
我尝试做的是从同一个站点发布数据并从它创建一个新的订单(当提交按钮被点击时)。我没有任何信息在我的请求。身体,我怀疑是在我的ejs出了问题,任何反馈是非常感谢的。 我的ejs文件: 和我的js文件:
我想要的是从一个API获取一个对象,并将HTTP(例如,jQuery的AJAX)请求发送到一个外部API。我该怎么开始?我对谷歌先生做了研究,但没有发现任何有用的东西。 我开始怀疑这是可能的吗?在这篇文章Laravel 4使后请求从控制器到外部url与数据它看起来像是可以做到的。但是没有例子也没有任何来源可以找到一些留档。 请帮帮我?
问题内容: 如果尝试登录https://orbit.theplanet.com/Login.aspx?url=/Default.aspx(使用任何用户名/密码组合),则可以看到登录凭据以非传统集的形式发送POST数据:仅一个寂寞的JSON字符串,没有正常的key = value对。 具体来说,代替: 甚至类似: 简单来说就是: 是否可以使用或替代模块执行此类请求?我愿意这样做,但希望有更高层次的东
客户端可能会发送多个查询参数,如: 我需要获取所有查询参数并将其提取为字符串