Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bir bakışta
Hedef: Dev Proxy API hatalarını simüle ederken uygulamanızda hata ayıklayın
Süre: 15 dakika
Eklentiler:GenericRandomErrorPlugin
Önkoşullar:Geliştirme Proxy'sini, VS Code'ı ayarlama
API'leri çağıran uygulamalar oluştururken kodunuzun hataları düzgün işlediğine emin olmanız gerekir. Dev Proxy'yi Visual Studio (VS) Code'un hata ayıklayıcısıyla birleştirerek API hatalarını simüle edebilir ve hata işleme kodunuzda ilerleyerek doğru şekilde çalıştığını doğrulayabilirsiniz.
Genel Bakış
Geliştirme Proxy'si ile hata ayıklama üç adımdan oluşur:
- HTTP isteklerini Dev Proxy aracılığıyla yönlendirmek için VS Code'ı yapılandırma
- Geliştirme Proxy'sini belirli hataların benzetimini yapmak için yapılandırma
- Hata işleme kodunuzda kesme noktaları ayarlama ve hata ayıklama
Geliştirici Proxy'si ile hata ayıklamak için VS Code'u yapılandırın
VS Code'un nasıl yapılandırılır, kullandığınız programlama diline bağlıdır. Aşağıdaki bölümlerde, Node.js, .NET ve Python uygulamaları için VS Code'un nasıl yapılandırılır gösterilmektedir.
Node.js
Dev Proxy ile bir Node.js uygulamasında hata ayıklamak için dosyayı ara sunucu ortam değişkenlerini ayarlayıp TLS/SSL sertifika doğrulamasını devre dışı bırakacak şekilde yapılandırın .
Dosya: .vscode/launch.json
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Debug with Dev Proxy",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}/index.js",
"env": {
"NODE_ENV": "development",
"http_proxy": "http://127.0.0.1:8000",
"https_proxy": "http://127.0.0.1:8000",
"GLOBAL_AGENT_HTTP_PROXY": "http://127.0.0.1:8000",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
}
]
}
Önemli
Bu ayar TLS/SSL sertifika doğrulamasını devre dışı bırakır. Bu ayarı yalnızca geliştirme sırasında kullanın. Daha güvenli bir yaklaşım için Dev Proxy sertifikasına doğrudan güvenmek için kullanın :
macOS/Linux:
"NODE_EXTRA_CA_CERTS": "${env:HOME}/.devproxy/rootCert.pem"
Windows:
"NODE_EXTRA_CA_CERTS": "${env:USERPROFILE}\\.devproxy\\rootCert.pem"
değişkeni, birçok Node.js HTTP kitaplığı için ara sunucu desteği sağlayan paket tarafından kullanılır. Farklı HTTP kitaplıklarını yapılandırma hakkında daha fazla bilgi için bkz. Node.js uygulamalarla Geliştirme Proxy'si kullanma.
.NET
.NET uygulamaları otomatik olarak sistem ara sunucusu ayarlarını kullanır. Geliştirme Ara Sunucusu ile bir .NET uygulamasında hata ayıklamak için genellikle herhangi bir ortam değişkeni ayarlamanız gerekmez. Temel hata ayıklama yapılandırması oluşturma:
Dosya: .vscode/launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug with Dev Proxy",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/bin/Debug/net8.0/MyApp.dll",
"args": [],
"cwd": "${workspaceFolder}",
"console": "internalConsole",
"stopAtEntry": false
}
]
}
Uygulamanız sistem proxy'sini almazsa, ara sunucu ortam değişkenlerini açıkça ayarlayın:
Dosya: .vscode/launch.json (belirtilmiş ara sunucu ayarlarıyla)
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug with Dev Proxy",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/bin/Debug/net8.0/MyApp.dll",
"args": [],
"cwd": "${workspaceFolder}",
"console": "internalConsole",
"stopAtEntry": false,
"env": {
"http_proxy": "http://127.0.0.1:8000",
"https_proxy": "http://127.0.0.1:8000"
}
}
]
}
Tavsiye
Windows ve macOS'ta .NET, Dev Proxy kurulumu sırasında güvenilen bir kök sertifika olarak yüklediyseniz Dev Proxy sertifikasına otomatik olarak güvenir. Linux'ta sertifikaya el ile güvenmeniz gerekebilir. Güvenilen sertifikaları yapılandırmak için dağıtımınızın belgelerine bakın.
Python
Dev Proxy ile Python bir uygulamada hata ayıklamak için launch.json dosyasını ara sunucu ortam değişkenlerini ayarlamak üzere yapılandırın. Yapılandırma, kitaplığı mı yoksa diğer HTTP kitaplıklarını mı kullandığınıza bağlıdır.
Dosya: .vscode/launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug with Dev Proxy",
"type": "debugpy",
"request": "launch",
"program": "${workspaceFolder}/main.py",
"console": "integratedTerminal",
"env": {
"HTTP_PROXY": "http://127.0.0.1:8000",
"HTTPS_PROXY": "http://127.0.0.1:8000",
"REQUESTS_CA_BUNDLE": ""
}
}
]
}
Önemli
Boş bir dizeye ayarlamak, kütüphaneye TLS/SSL sertifika doğrulamasını atlamasını söyler. Bu ayarı yalnızca geliştirme sırasında kullanın.
Daha güvenli bir yaklaşım için Dev Proxy sertifikasına yönelin:
macOS/Linux:
"REQUESTS_CA_BUNDLE": "${env:HOME}/.devproxy/rootCert.pem"
Windows:
"REQUESTS_CA_BUNDLE": "${env:USERPROFILE}\\.devproxy\\rootCert.pem"
Kitaplığı kullanıyorsanız , bunun yerine ortam değişkenini kullanarak TLS/SSL doğrulamasını yapılandırın:
{
"env": {
"HTTP_PROXY": "http://127.0.0.1:8000",
"HTTPS_PROXY": "http://127.0.0.1:8000",
"TLS/SSL_CERT_FILE": "${env:HOME}/.devproxy/rootCert.pem"
}
}
Hataları simüle etmek için Geliştirme Proxy'sini yapılandırın.
Hata işleme hatalarını ayıklamak için Dev Proxy'yi uygulamanız API'leri çağırdığında belirli hataları döndürecek şekilde yapılandırın. veya gibi hataların benzetimini yapmak için GenericRandomErrorPlugin kullanın.
429 (Çok Fazla İstek Var) hatası simülasyonu
Bant genişliği sınırlamasını simüle eden bir Dev Proxy yapılandırma dosyası oluşturun.
Dosya: devproxyrc.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/rc.schema.json",
"plugins": [
{
"name": "GenericRandomErrorPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "errorsConfig"
}
],
"urlsToWatch": [
"https://api.contoso.com/*"
],
"rate": 100,
"errorsConfig": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/genericrandomerrorplugin.schema.json",
"errorsFile": "errors.json"
}
}
Belirli hata yanıtlarıyla hata dosyasını oluşturun:
Dosya: errors.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/genericrandomerrorplugin.errorsfile.schema.json",
"errors": [
{
"request": {
"url": "https://api.contoso.com/*"
},
"responses": [
{
"statusCode": 429,
"headers": [
{
"name": "content-type",
"value": "application/json"
},
{
"name": "Retry-After",
"value": "60"
}
],
"body": {
"error": {
"code": "TooManyRequests",
"message": "Rate limit exceeded. Retry after 60 seconds."
}
}
}
]
}
]
}
Tavsiye
Ayarlamayı, hata ayıklama sırasında hata işleme kodunuza tutarlı bir şekilde ulaşabilmeniz için her isteğin başarısız olmasını sağlayacak şekilde yapın. Aralıklı hataları test etmek istediğinizde oranı düşürebilirsiniz.
500 (İç Sunucu Hatası) Simülasyonu Yap
Sunucu hatalarının benzetimini yapmak için başka bir hata yanıtı ekleyin:
Dosya: errors.json (birden çok hata)
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/genericrandomerrorplugin.errorsfile.schema.json",
"errors": [
{
"request": {
"url": "https://api.contoso.com/*"
},
"responses": [
{
"statusCode": 429,
"headers": [
{
"name": "content-type",
"value": "application/json"
},
{
"name": "Retry-After",
"value": "60"
}
],
"body": {
"error": {
"code": "TooManyRequests",
"message": "Rate limit exceeded. Retry after 60 seconds."
}
}
},
{
"statusCode": 500,
"headers": [
{
"name": "content-type",
"value": "application/json"
}
],
"body": {
"error": {
"code": "InternalServerError",
"message": "An unexpected error occurred."
}
}
}
]
}
]
}
Birden çok hata yanıtı tanımladığınızda, Geliştirici Proxy'si kesilen her istek için rastgele bir yanıt seçer.
Hata işleme kodunuzda hata ayıklama
VS Code ve Geliştirme Proxy'si yapılandırıldığında, hata işleme kodunuzun hatalarını ayıklayabilirsiniz.
1. Adım: Kesme noktalarını ayarlama
Kaynak kodunuzu açın ve hata işleme kodunuzda kesme noktaları ayarlayın. Örneğin, Node.js bir uygulamada:
async function fetchData() {
try {
const response = await fetch('https://api.contoso.com/data');
if (!response.ok) {
// Set a breakpoint here to debug error responses
throw new Error(`HTTP error: ${response.status}`);
}
return await response.json();
} catch (error) {
// Set a breakpoint here to debug exceptions
console.error('Failed to fetch data:', error);
throw error;
}
}
2. Adım: Geliştirme Ara Sunucusunu Başlatma
Geliştirme Proxy'nizi yapılandırma dosyanızla başlatın:
devproxy --config-file devproxyrc.json
3. Adım: VS Code'da hata ayıklamayı başlatma
- VS Code'un açılması
- F5 tuşuna basın veya Hata Ayıklamayı Başlat'ı seçin
- Uygulamanız bir API çağrısı yaptığında Dev Proxy araya girip bir hata döndürür
- VS Code kesme noktanızda duraklar
- Hata ayıklama denetimlerini kullanarak kodunuzda adım adım ilerleyin ve değişkenleri inceleyin
4. Adım: Hatayı inceleme
VS Code uygulaması kesme noktanıza geldiğinde, hata ayıklama panelini kullanarak:
- Hata yanıtı durum kodunu ve iletisini görüntüleme
- Yerel değişkenlerin değerlerini denetleme
- Yeniden deneme mantığınızda adım adım ilerleyin
- Hata iletilerinizin kullanıcı dostu olduğunu doğrulayın
Geliştirme Proxy'lerini otomatik olarak başlatma ve durdurma
Hata ayıklama iş akışınızı kolaylaştırmak için VS Code'u hata ayıklamaya başladığınızda Geliştirme Ara Sunucusu'nu otomatik olarak başlatacak ve işiniz bittiğinde durduracak şekilde yapılandırın. Dev Proxy Toolkit uzantısını yükleyin ve görevleri yapılandırın:
Dosya: .vscode/tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "devproxy-start",
"type": "devproxy",
"command": "start",
"args": [
"--config-file",
"devproxyrc.json"
],
"isBackground": true,
"problemMatcher": "$devproxy-watch"
},
{
"label": "devproxy-stop",
"type": "devproxy",
"command": "stop"
}
]
}
Bu görevleri kullanmak için sisteminizi güncelleyin:
Dosya: .vscode/launch.json (Node.js otomatik başlangıç ile)
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Debug with Dev Proxy",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}/index.js",
"preLaunchTask": "devproxy-start",
"postDebugTask": "devproxy-stop",
"env": {
"NODE_ENV": "development",
"http_proxy": "http://127.0.0.1:8000",
"https_proxy": "http://127.0.0.1:8000",
"GLOBAL_AGENT_HTTP_PROXY": "http://127.0.0.1:8000",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
}
]
}
Etkili hata ayıklama ipuçları
- Kesme noktalarınıza tutarlı bir şekilde isabet etmek için, her isteğin başarısız olması için Geliştirme Proxy yapılandırmanızda ayarlamalar yapın.
- Kodunuzun belirli bir hatayı nasıl işlediğini anlamak için hata ayıklarken tek bir hata yanıtı kullanın.
- Kodunuzun hız kısıtlamasına uygun olduğunu doğrulamak için, 429 hatalarında hata ayıklarken HTTP başlığını okuyup izlemediğini kontrol edin.
- Kodunuzun olağan dışı yanıtları düzgün bir şekilde işlemesini sağlamak için, hatalı biçimlendirilmiş JSON veya eksik üst bilgiler gibi uç durumların benzetimini yapmak için Dev Proxy kullanın.
- VS Code'da yalnızca belirli hatalarda kesme yapmak için koşullu kesme noktalarını kullanın. Bunun için, bir kesme noktasına sağ tıklayıp ". gibi bir koşul ekleyin.
Ayrıca bakınız
- Visual Studio Code hata ayıklama yapılandırmalarıyla Geliştirme Proxy'sini kullanma - VS Code'da Geliştirme Proxy'sini otomatik başlatma
- Uygulamamı rastgele hatalarla test et - rastgele API hatalarının benzetimini yapın
- İstek hata oranını değiştirme - hataların oluşma sıklığını ayarlama
- Node.js uygulamalarıyla Dev Proxy kullanma - Node.js proxy yapılandırması
- Geliştirme Proxy'lerini .NET uygulamalarıyla kullanma - .NET ara sunucu yapılandırması