Flutter API开发中如何将curl请求转换为适配Dio的HTTP URL
问题说明
你给出的curl是GET类型的接口请求,不存在可以直接调用的纯HTTP URL——因为该接口要求的两个鉴权/格式声明参数是放在HTTP请求头里传递的,不属于URL路径或查询参数的一部分,没法拼接到URL上直接访问,必须在发起HTTP请求时同步携带对应请求头才能正常调用。
curl参数对应拆解
- 请求方法:
GET - 请求地址:
https://assignment-api.blocked.com.tr/api/v1/product/all - 必传请求头:
accept:application/json,声明客户端期望接收JSON格式的响应数据access-token:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InN1bGV5bWFudXJlbjA3QGdtYWlsLmNvbSIsImlhdCI6MTY1NDY1NTIzNSwiZXhwIjoxNjgwNTc1MjM1fQ.L3t4E-x-IWlT1wjRx3WNzp-ecX-MsntIl-tRiD9zZmg,接口访问的身份鉴权凭证
Dio 可直接运行的调用代码
确保你的项目已经安装并引入dio依赖后,直接使用以下代码即可发起请求:
import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart'; void getAllProducts() async { final Dio dio = Dio(); try { final res = await dio.get( 'https://assignment-api.blocked.com.tr/api/v1/product/all', options: Options( headers: { 'accept': 'application/json', 'access-token': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InN1bGV5bWFudXJlbjA3QGdtYWlsLmNvbSIsImlhdCI6MTY1NDY1NTIzNSwiZXhwIjoxNjgwNTc1MjM1fQ.L3t4E-x-IWlT1wjRx3WNzp-ecX-MsntIl-tRiD9zZmg' }, responseType: ResponseType.json, ), ); // res.data 即为接口返回的商品数据,可直接用于后续业务处理 debugPrint(res.data.toString()); } on DioException catch (e) { // 按需处理请求异常:401为token失效、404为地址错误、500为服务端问题 debugPrint('请求异常: ${e.message}'); } }
补充提示:你使用的access-token为JWT格式,内置的
exp字段标记了凭证过期时间,如果请求返回401未授权错误,优先检查token是否过期,替换为新的有效token即可。
内容的提问来源于stack exchange,提问作者ume
相关产品推荐
相关产品推荐

