この質問が非常に基本的である場合は申し訳ありませんが、私は羽ばたきが初めてで、最近、HTTPリクエストでデフォルトヘッダーを設定するための良い方法を見つけることができませんでした。組み込みの簡単な方法ですが、ドキュメントでは見つかりませんでした。
このシンプルで簡単な方法は私のために働きました
var _dio = Dio();
_dio.options.headers= {"Authorization" : token};
カスタムClient
の@Radek Manasekのアイデアを拡張するだけで、すべてのメソッドをオーバーライドしているので、再度記述する必要はありません。
import 'Dart:convert';
import 'package:http/http.Dart' as http;
import 'package:http/http.Dart';
class MyClient extends http.BaseClient {
final Map<String, String> _defaultHeaders;
http.Client _httpClient = http.Client();
MyClient(this._defaultHeaders);
@override
Future<http.StreamedResponse> send(http.BaseRequest request) {
return _httpClient.send(request);
}
@override
Future<Response> get(url, {Map<String, String> headers}) {
return _httpClient.get(url, headers: _mergedHeaders(headers));
}
@override
Future<Response> post(url, {Map<String, String> headers, dynamic body, Encoding encoding}) {
return _httpClient.post(url, headers: _mergedHeaders(headers), body: body, encoding: encoding);
}
@override
Future<Response> patch(url, {Map<String, String> headers, dynamic body, Encoding encoding}) {
return _httpClient.patch(url, headers: _mergedHeaders(headers), body: body, encoding: encoding);
}
@override
Future<Response> put(url, {Map<String, String> headers, dynamic body, Encoding encoding}) {
return _httpClient.put(url, headers: _mergedHeaders(headers), body: body, encoding: encoding);
}
@override
Future<Response> head(url, {Map<String, String> headers}) {
return _httpClient.head(url, headers: _mergedHeaders(headers));
}
@override
Future<Response> delete(url, {Map<String, String> headers}) {
return _httpClient.delete(url, headers: _mergedHeaders(headers));
}
Map<String, String> _mergedHeaders(Map<String, String> headers) =>
{...?_defaultHeaders, ...?headers};
}