Aracılığıyla paylaş


HttpRepl ile web API'lerini test etme

HTTP Okuma-Değerlendirme-Yazdırma Döngüsü (REPL) şöyledir:

  • .NET Core'un desteklendiği her yerde desteklenen basit, platformlar arası komut satırı aracı.
  • ASP.NET Core web API'lerini (ve ASP.NET Core olmayan web API'lerini) test etmek ve sonuçlarını görüntülemek üzere HTTP isteklerinde bulunmak için kullanılır.
  • localhost ve Azure App Service dahil olmak üzere herhangi bir ortamda barındırılan web API'lerini test edebilir.

Aşağıdaki HTTP fiilleri desteklenir:

Birlikte ilerlemek için örnek ASP.NET Core web API'sini görüntüleyin veya indirin (indirme).

Ön koşullar

Yükleme

HttpRepl yüklemek için şu komutu çalıştırın:

dotnet tool install -g Microsoft.dotnet-httprepl

Microsoft.dotnet-httprepl NuGet paketinden bir .NET Core Genel Aracı yüklenir.

Dekont

Varsayılan olarak yüklenecek .NET ikili dosyalarının mimarisi şu anda çalışan işletim sistemi mimarisini temsil eder. Farklı bir işletim sistemi mimarisi belirtmek için bkz . dotnet tool install, --arch option. Daha fazla bilgi için bkz. GitHub sorunu dotnet/AspNetCore.Docs #29262.

macOS'ta yolu güncelleştirin:

export PATH="$HOME/.dotnet/tools:$PATH"

Kullanım

Aracı başarıyla yükledikten sonra aşağıdaki komutu çalıştırarak HttpRepl'i başlatın:

httprepl

Kullanılabilir HttpRepl komutlarını görüntülemek için aşağıdaki komutlardan birini çalıştırın:

httprepl -h
httprepl --help

Aşağıdaki çıktı görüntülenir:

Usage:
  httprepl [<BASE_ADDRESS>] [options]

Arguments:
  <BASE_ADDRESS> - The initial base address for the REPL.

Options:
  -h|--help - Show help information.

Once the REPL starts, these commands are valid:

Setup Commands:
Use these commands to configure the tool for your API server

connect        Configures the directory structure and base address of the api server
set header     Sets or clears a header for all requests. e.g. `set header content-type application/json`

HTTP Commands:
Use these commands to execute requests against your application.

GET            get - Issues a GET request
POST           post - Issues a POST request
PUT            put - Issues a PUT request
DELETE         delete - Issues a DELETE request
PATCH          patch - Issues a PATCH request
HEAD           head - Issues a HEAD request
OPTIONS        options - Issues a OPTIONS request

Navigation Commands:
The REPL allows you to navigate your URL space and focus on specific APIs that you are working on.

ls             Show all endpoints for the current path
cd             Append the given directory to the currently selected path, or move up a path when using `cd ..`

Shell Commands:
Use these commands to interact with the REPL shell.

clear          Removes all text from the shell
echo [on/off]  Turns request echoing on or off, show the request that was made when using request commands
exit           Exit the shell

REPL Customization Commands:
Use these commands to customize the REPL behavior.

pref [get/set] Allows viewing or changing preferences, e.g. 'pref set editor.command.default 'C:\\Program Files\\Microsoft VS Code\\Code.exe'`
run            Runs the script at the given path. A script is a set of commands that can be typed with one command per line
ui             Displays the Swagger UI page, if available, in the default browser

Use `help <COMMAND>` for more detail on an individual command. e.g. `help get`.
For detailed tool info, see https://aka.ms/http-repl-doc.

HttpRepl, komutun tamamlanmasını sağlar. Sekme tuşuna basmak, yazdığınız karakterleri veya API uç noktasını tamamlayan komutlar listesinde yinelenir. Aşağıdaki bölümlerde, kullanılabilir CLI komutları özetlenmiştir.

Web API’sine bağlanma

Aşağıdaki komutu çalıştırarak bir web API'sine bağlanın:

httprepl <ROOT URI>

<ROOT URI> , web API'sinin temel URI'sidir. Örnek:

httprepl https://localhost:5001

Alternatif olarak, HttpRepl çalışırken istediğiniz zaman aşağıdaki komutu çalıştırın:

connect <ROOT URI>

Örnek:

(Disconnected)> connect https://localhost:5001

Web API'si için OpenAPI el ile açıklamasının üzerine gelin

Yukarıdaki bağlan komutu OpenAPI açıklamasını otomatik olarak bulmaya çalışır. Herhangi bir nedenle bunu yapamıyorsa, --openapi seçeneğini kullanarak web API'si için OpenAPI açıklamasının URI'sini belirtebilirsiniz:

connect <ROOT URI> --openapi <OPENAPI DESCRIPTION ADDRESS>

Örnek:

(Disconnected)> connect https://localhost:5001 --openapi /swagger/v1/swagger.json

OpenAPI açıklaması arama, ayrıştırma ve doğrulama ayrıntıları için ayrıntılı çıkışı etkinleştirme

connect komutuyla --verbose seçeneğinin belirtilmesi, araç OpenAPI açıklamasını ararken, ayrıştırdığında ve doğruladığında daha fazla ayrıntı üretir.

connect <ROOT URI> --verbose

Örnek:

(Disconnected)> connect https://localhost:5001 --verbose
Checking https://localhost:5001/swagger.json... 404 NotFound
Checking https://localhost:5001/swagger/v1/swagger.json... 404 NotFound
Checking https://localhost:5001/openapi.json... Found
Parsing... Successful (with warnings)
The field 'info' in 'document' object is REQUIRED [#/info]
The field 'paths' in 'document' object is REQUIRED [#/paths]

Kullanılabilir uç noktaları görüntüleme

Web API’si adresinin geçerli yolundaki farklı uç noktaları (denetleyicileri) listelemek için ls veya dir komutunu çalıştırın:

https://localhost:5001/> ls

Aşağıdaki çıkış biçimi görüntülenir:

.        []
Fruits   [get|post]
People   [get|post]

https://localhost:5001/>

Yukarıdaki çıkış, kullanılabilir iki denetleyici olduğunu gösterir: Fruits ve People. Her iki denetleyici de parametresiz HTTP GET ve POST işlemlerini destekler.

Belirli bir denetleyicide gezinirken daha fazla ayrıntı gösterilir. Örneğin, aşağıdaki komutun çıkışı Fruits denetleyicisinin HTTP GET, PUT ve DELETE işlemlerini de desteklediğini gösterir. Bu işlemlerin her biri rotada bir id parametresi bekler:

https://localhost:5001/fruits> ls
.      [get|post]
..     []
{id}   [get|put|delete]

https://localhost:5001/fruits>

Alternatif olarak, web API'sinin Swagger UI sayfasını tarayıcıda açmak için ui komutunu çalıştırın. Örnek:

https://localhost:5001/> ui

Web API'sinde farklı bir uç noktaya gitmek için cd komutunu çalıştırın:

https://localhost:5001/> cd people

cd komutunu izleyen yol büyük/küçük harfe duyarlı değildir. Aşağıdaki çıkış biçimi görüntülenir:

/people    [get|post]

https://localhost:5001/people>

HttpRepl'i özelleştirme

HttpRepl'in varsayılan renkleri özelleştirilebilir. Ayrıca, varsayılan bir metin düzenleyicisi tanımlanabilir. HttpRepl tercihleri geçerli oturumda kalıcı hale getirilir ve gelecekteki oturumlarda kabul edilir. Değiştirildikten sonra tercihler aşağıdaki dosyada depolanır:

%HOME%/.httpreplprefs

.httpreplprefs dosyası başlangıçta yüklenir ve çalışma zamanındaki değişiklikler için izlenmez. Dosyada el ile yapılan değişiklikler yalnızca araç yeniden başlatıldıktan sonra etkinleşir.

Ayarları görüntüleme

Kullanılabilir ayarları görüntülemek için pref get komutunu çalıştırın. Örnek:

https://localhost:5001/> pref get

Yukarıdaki komut kullanılabilir anahtar-değer çiftlerini görüntüler:

colors.json=Green
colors.json.arrayBrace=BoldCyan
colors.json.comma=BoldYellow
colors.json.name=BoldMagenta
colors.json.nameSeparator=BoldWhite
colors.json.objectBrace=Cyan
colors.protocol=BoldGreen
colors.status=BoldYellow

Renk tercihlerini ayarlama

Yanıt renklendirmesi şu anda yalnızca JSON için desteklenmektedir. Varsayılan HttpRepl aracı renklendirmesini özelleştirmek için, değiştirilecek renge karşılık gelen anahtarı bulun. Anahtarları bulma yönergeleri için, Ayarları görüntüleme bölümüne bakın. Örneğin, colors.json anahtarı değerini aşağıdaki gibi Green değerinden White olarak değiştirin:

https://localhost:5001/people> pref set colors.json White

Yalnızca izin verilen renkler kullanılabilir. Sonraki HTTP istekleri, çıkışı yeni renklendirmeyle görüntüler.

Belirli renk tuşları ayarlı olmadığında daha genel anahtarlar dikkate alınır. Bu geri dönüş davranışını göstermek için aşağıdaki örneği göz önünde bulundurun:

  • Bir colors.json.name değeri yoksa colors.json.string kullanılır.
  • Bir colors.json.string değeri yoksa colors.json.literal kullanılır.
  • Bir colors.json.literal değeri yoksa colors.json kullanılır.
  • Bir colors.json değeri yoksa, komut kabuğunun varsayılan metin rengi (AllowedColors.None) kullanılır.

Girinti boyutunu ayarlama

Yanıt girinti boyutu özelleştirmesi şu anda yalnızca JSON için desteklenmektedir. Varsayılan boyut iki boşluktur. Örnek:

[
  {
    "id": 1,
    "name": "Apple"
  },
  {
    "id": 2,
    "name": "Orange"
  },
  {
    "id": 3,
    "name": "Strawberry"
  }
]

Varsayılan boyutu değiştirmek için formatting.json.indentSize anahtarını ayarlayın. Örneğin, her zaman dört boşluk kullanmak için:

pref set formatting.json.indentSize 4

Sonraki yanıtlar dört boşluk ayarını kabul eder:

[
    {
        "id": 1,
        "name": "Apple"
    },
    {
        "id": 2,
        "name": "Orange"
    },
    {
        "id": 3,
        "name": "Strawberry"
    }
]

Varsayılan metin düzenleyicisini ayarlama

Varsayılan olarak, HttpRepl'de kullanım için yapılandırılmış bir metin düzenleyicisi yoktur. HTTP isteği gövdesi gerektiren web API’si yöntemlerini test etmek için varsayılan bir metin düzenleyicisi ayarlanmalıdır. HttpRepl aracı, yapılandırılmış metin düzenleyicisini yalnızca istek gövdesini oluşturmak amacıyla başlatır. Tercih ettiğiniz metin düzenleyicisini varsayılan olarak ayarlamak için aşağıdaki komutu çalıştırın:

pref set editor.command.default "<EXECUTABLE>"

Önceki komutta, <EXECUTABLE> metin düzenleyicisinin yürütülebilir dosyasının tam yoludur. Örneğin, Visual Studio Code’u varsayılan metin düzenleyicisi olarak ayarlamak için aşağıdaki komutu çalıştırın:

pref set editor.command.default "/usr/bin/code"

Belirli CLI bağımsız değişkenleriyle varsayılan metin düzenleyicisini başlatmak için editor.command.default.arguments anahtarı ayarlayın. Örneğin, Visual Studio Code’un varsayılan metin düzenleyicisi olduğunu ve HttpRepl'in her zaman Visual Studio Code uzantılarının devre dışı bırakıldığı yeni bir oturumda açmasını istediğinizi varsayalım. Şu komutu çalıştırın:

pref set editor.command.default.arguments "--disable-extensions --new-window"

Bahşiş

Varsayılan düzenleyiciniz Visual Studio Code ise, genellikle Visual Studio Code geri dönmeden önce dosyayı kapatmanızı beklemeye zorlamak için -w veya --wait bağımsız değişkenini geçirmek istersiniz.

OpenAPI Açıklaması arama yollarını ayarlama

Varsayılan olarak, HttpRepl --openapi seçeneği olmadan connect komutunu yürütürken OpenAPI açıklamasını bulmak için kullandığı göreli yollar kümesine sahiptir. Bu göreli yollar, connect komutunda belirtilen kök ve temel yollarla birleştirilir. Varsayılan göreli yollar şunlardır:

  • swagger.json
  • swagger/v1/swagger.json
  • /swagger.json
  • /swagger/v1/swagger.json
  • openapi.json
  • /openapi.json

Ortamınızda farklı bir arama yolu kümesi kullanmak için swagger.searchPaths tercihini ayarlayın. Değer, göreli yolların kanalla ayrılmış bir listesi olmalıdır. Örnek:

pref set swagger.searchPaths "swagger/v2/swagger.json|swagger/v3/swagger.json"

Varsayılan listeyi tamamen değiştirmek yerine, yollar eklenerek veya kaldırılarak da liste değiştirilebilir.

Varsayılan listeye bir veya daha fazla arama yolu eklemek için swagger.addToSearchPaths tercihini ayarlayın. Değer, göreli yolların kanalla ayrılmış bir listesi olmalıdır. Örnek:

pref set swagger.addToSearchPaths "openapi/v2/openapi.json|openapi/v3/openapi.json"

Varsayılan listeden bir veya daha fazla arama yolu kaldırmak için swagger.addToSearchPaths tercihini ayarlayın. Değer, göreli yolların kanalla ayrılmış bir listesi olmalıdır. Örnek:

pref set swagger.removeFromSearchPaths "swagger.json|/swagger.json"

HTTP GET isteklerini test etme

Özet

get <PARAMETER> [-F|--no-formatting] [-h|--header] [--response:body] [--response:headers] [-s|--streaming]

Bağımsız değişkenler

PARAMETER

Varsa, ilişkili denetleyici eylem yöntemi tarafından beklenen yol parametresi.

Seçenekler

get komutu için aşağıdaki seçenekler kullanılabilir:

  • -F|--no-formatting

    İletişim durumu HTTP yanıt biçimlendirmesini gizleyen bir bayrak.

  • -h|--header

    Bir HTTP isteği üstbilgisi ayarlar. Aşağıdaki iki dosya biçimi desteklenir:

    • {header}={value}
    • {header}:{value}
  • --response:body

    HTTP yanıt gövdesinin yazılması gereken bir dosya belirtir. Örneğin, --response:body "C:\response.json". Dosya yoksa oluşturulur.

  • --response:headers

    HTTP yanıt üst bilgisinin yazılması gereken bir dosya belirtir. Örneğin, --response:headers "C:\response.txt". Dosya yoksa oluşturulur.

  • -s|--streaming

    İletişim durumu HTTP yanıtının akışını etkinleştiren bir bayrak.

Örnek

HTTP GET isteği göndermek için:

  1. get komutunu, destekleyen bir uç noktada çalıştırın:

    https://localhost:5001/people> get
    

    Önceki komut aşağıdaki çıkış biçimini görüntüler:

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Date: Fri, 21 Jun 2019 03:38:45 GMT
    Server: Kestrel
    Transfer-Encoding: chunked
    
    [
      {
        "id": 1,
        "name": "Scott Hunter"
      },
      {
        "id": 2,
        "name": "Scott Hanselman"
      },
      {
        "id": 3,
        "name": "Scott Guthrie"
      }
    ]
    
    
    https://localhost:5001/people>
    
  2. get komutuna bir parametre geçirerek belirli bir kaydı alın:

    https://localhost:5001/people> get 2
    

    Önceki komut aşağıdaki çıkış biçimini görüntüler:

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Date: Fri, 21 Jun 2019 06:17:57 GMT
    Server: Kestrel
    Transfer-Encoding: chunked
    
    [
      {
        "id": 2,
        "name": "Scott Hanselman"
      }
    ]
    
    
    https://localhost:5001/people>
    

HTTP POST isteklerini test etme

Özet

post <PARAMETER> [-c|--content] [-f|--file] [-h|--header] [--no-body] [-F|--no-formatting] [--response] [--response:body] [--response:headers] [-s|--streaming]

Bağımsız değişkenler

PARAMETER

Varsa, ilişkili denetleyici eylem yöntemi tarafından beklenen yol parametresi.

Seçenekler

  • -F|--no-formatting

    İletişim durumu HTTP yanıt biçimlendirmesini gizleyen bir bayrak.

  • -h|--header

    Bir HTTP isteği üstbilgisi ayarlar. Aşağıdaki iki dosya biçimi desteklenir:

    • {header}={value}
    • {header}:{value}
  • --response:body

    HTTP yanıt gövdesinin yazılması gereken bir dosya belirtir. Örneğin, --response:body "C:\response.json". Dosya yoksa oluşturulur.

  • --response:headers

    HTTP yanıt üst bilgisinin yazılması gereken bir dosya belirtir. Örneğin, --response:headers "C:\response.txt". Dosya yoksa oluşturulur.

  • -s|--streaming

    İletişim durumu HTTP yanıtının akışını etkinleştiren bir bayrak.

  • -c|--content

    Satır içi HTTP isteği gövdesi sağlar. Örneğin, -c "{\"id\":2,\"name\":\"Cherry\"}".

  • -f|--file

    HTTP isteği gövdesini içeren bir dosyanın yolunu sağlar. Örneğin, -f "C:\request.json".

  • --no-body

    HTTP isteği gövdesinin gerekli olmadığını gösterir.

Örnek

HTTP POST isteği göndermek için:

  1. post komutunu, destekleyen bir uç noktada çalıştırın:

    https://localhost:5001/people> post -h Content-Type=application/json
    

    Yukarıdaki komutta Content-Type HTTP isteği üst bilgisi, istek gövdesi JSON medya türü olarak belirtecek şekilde ayarlanmıştır. Varsayılan metin düzenleyicisi, HTTP isteği gövdesini temsil eden JSON şablonuna sahip bir .tmp dosyası açar. Örnek:

    {
      "id": 0,
      "name": ""
    }
    

    Bahşiş

    Varsayılan metin düzenleyicisini ayarlamak için Varsayılan metin düzenleyicisini ayarlama bölümüne bakın.

  2. Model doğrulama gereksinimlerini karşılamak için JSON şablonunu değiştirin:

    {
      "id": 0,
      "name": "Scott Addie"
    }
    
  3. .tmp dosyasını kaydedin ve metin düzenleyiciyi kapatın. Komut kabuğunda aşağıdaki çıkış görüntülenir:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    Date: Thu, 27 Jun 2019 21:24:18 GMT
    Location: https://localhost:5001/people/4
    Server: Kestrel
    Transfer-Encoding: chunked
    
    {
      "id": 4,
      "name": "Scott Addie"
    }
    
    
    https://localhost:5001/people>
    

HTTP PUT isteklerini test etme

Özet

put <PARAMETER> [-c|--content] [-f|--file] [-h|--header] [--no-body] [-F|--no-formatting] [--response] [--response:body] [--response:headers] [-s|--streaming]

Bağımsız değişkenler

PARAMETER

Varsa, ilişkili denetleyici eylem yöntemi tarafından beklenen yol parametresi.

Seçenekler

  • -F|--no-formatting

    İletişim durumu HTTP yanıt biçimlendirmesini gizleyen bir bayrak.

  • -h|--header

    Bir HTTP isteği üstbilgisi ayarlar. Aşağıdaki iki dosya biçimi desteklenir:

    • {header}={value}
    • {header}:{value}
  • --response:body

    HTTP yanıt gövdesinin yazılması gereken bir dosya belirtir. Örneğin, --response:body "C:\response.json". Dosya yoksa oluşturulur.

  • --response:headers

    HTTP yanıt üst bilgisinin yazılması gereken bir dosya belirtir. Örneğin, --response:headers "C:\response.txt". Dosya yoksa oluşturulur.

  • -s|--streaming

    İletişim durumu HTTP yanıtının akışını etkinleştiren bir bayrak.

  • -c|--content

    Satır içi HTTP isteği gövdesi sağlar. Örneğin, -c "{\"id\":2,\"name\":\"Cherry\"}".

  • -f|--file

    HTTP isteği gövdesini içeren bir dosyanın yolunu sağlar. Örneğin, -f "C:\request.json".

  • --no-body

    HTTP isteği gövdesinin gerekli olmadığını gösterir.

Örnek

HTTP PUT isteği göndermek için:

  1. İsteğe bağlı: Değiştirmeden önce verileri görüntülemek için get komutunu çalıştırın:

    https://localhost:5001/fruits> get
    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Date: Sat, 22 Jun 2019 00:07:32 GMT
    Server: Kestrel
    Transfer-Encoding: chunked
    
    [
      {
        "id": 1,
        "data": "Apple"
      },
      {
        "id": 2,
        "data": "Orange"
      },
      {
        "id": 3,
        "data": "Strawberry"
      }
    ]
    
  2. put komutunu, destekleyen bir uç noktada çalıştırın:

    https://localhost:5001/fruits> put 2 -h Content-Type=application/json
    

    Yukarıdaki komutta Content-Type HTTP isteği üst bilgisi, istek gövdesi JSON medya türü olarak belirtecek şekilde ayarlanmıştır. Varsayılan metin düzenleyicisi, HTTP isteği gövdesini temsil eden JSON şablonuna sahip bir .tmp dosyası açar. Örnek:

    {
      "id": 0,
      "name": ""
    }
    

    Bahşiş

    Varsayılan metin düzenleyicisini ayarlamak için Varsayılan metin düzenleyicisini ayarlama bölümüne bakın.

  3. Model doğrulama gereksinimlerini karşılamak için JSON şablonunu değiştirin:

    {
      "id": 2,
      "name": "Cherry"
    }
    
  4. .tmp dosyasını kaydedin ve metin düzenleyiciyi kapatın. Komut kabuğunda aşağıdaki çıkış görüntülenir:

    [main 2019-06-28T17:27:01.805Z] update#setState idle
    HTTP/1.1 204 No Content
    Date: Fri, 28 Jun 2019 17:28:21 GMT
    Server: Kestrel
    
  5. İsteğe bağlı: Değişiklikleri görmek için bir get komutu gönderin. Örneğin, metin düzenleyicisinde "Kiraz" yazarsanız, bir get aşağıdaki çıkışı döndürür:

    https://localhost:5001/fruits> get
    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Date: Sat, 22 Jun 2019 00:08:20 GMT
    Server: Kestrel
    Transfer-Encoding: chunked
    
    [
      {
        "id": 1,
        "data": "Apple"
      },
      {
        "id": 2,
        "data": "Cherry"
      },
      {
        "id": 3,
        "data": "Strawberry"
      }
    ]
    
    
    https://localhost:5001/fruits>
    

HTTP DELETE isteklerini test etme

Özet

delete <PARAMETER> [-F|--no-formatting] [-h|--header] [--response] [--response:body] [--response:headers] [-s|--streaming]

Bağımsız değişkenler

PARAMETER

Varsa, ilişkili denetleyici eylem yöntemi tarafından beklenen yol parametresi.

Seçenekler

  • -F|--no-formatting

    İletişim durumu HTTP yanıt biçimlendirmesini gizleyen bir bayrak.

  • -h|--header

    Bir HTTP isteği üstbilgisi ayarlar. Aşağıdaki iki dosya biçimi desteklenir:

    • {header}={value}
    • {header}:{value}
  • --response:body

    HTTP yanıt gövdesinin yazılması gereken bir dosya belirtir. Örneğin, --response:body "C:\response.json". Dosya yoksa oluşturulur.

  • --response:headers

    HTTP yanıt üst bilgisinin yazılması gereken bir dosya belirtir. Örneğin, --response:headers "C:\response.txt". Dosya yoksa oluşturulur.

  • -s|--streaming

    İletişim durumu HTTP yanıtının akışını etkinleştiren bir bayrak.

Örnek

HTTP DELETE isteği göndermek için:

  1. İsteğe bağlı: Değiştirmeden önce verileri görüntülemek için get komutunu çalıştırın:

    https://localhost:5001/fruits> get
    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Date: Sat, 22 Jun 2019 00:07:32 GMT
    Server: Kestrel
    Transfer-Encoding: chunked
    
    [
      {
        "id": 1,
        "data": "Apple"
      },
      {
        "id": 2,
        "data": "Orange"
      },
      {
        "id": 3,
        "data": "Strawberry"
      }
    ]
    
  2. delete komutunu, destekleyen bir uç noktada çalıştırın:

    https://localhost:5001/fruits> delete 2
    

    Önceki komut aşağıdaki çıkış biçimini görüntüler:

    HTTP/1.1 204 No Content
    Date: Fri, 28 Jun 2019 17:36:42 GMT
    Server: Kestrel
    
  3. İsteğe bağlı: Değişiklikleri görmek için bir get komutu gönderin. Bu örnekte, bir get aşağıdaki çıkışı döndürür:

    https://localhost:5001/fruits> get
    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Date: Sat, 22 Jun 2019 00:16:30 GMT
    Server: Kestrel
    Transfer-Encoding: chunked
    
    [
      {
        "id": 1,
        "data": "Apple"
      },
      {
        "id": 3,
        "data": "Strawberry"
      }
    ]
    
    
    https://localhost:5001/fruits>
    

HTTP PATCH isteklerini test etme

Özet

patch <PARAMETER> [-c|--content] [-f|--file] [-h|--header] [--no-body] [-F|--no-formatting] [--response] [--response:body] [--response:headers] [-s|--streaming]

Bağımsız değişkenler

PARAMETER

Varsa, ilişkili denetleyici eylem yöntemi tarafından beklenen yol parametresi.

Seçenekler

  • -F|--no-formatting

    İletişim durumu HTTP yanıt biçimlendirmesini gizleyen bir bayrak.

  • -h|--header

    Bir HTTP isteği üstbilgisi ayarlar. Aşağıdaki iki dosya biçimi desteklenir:

    • {header}={value}
    • {header}:{value}
  • --response:body

    HTTP yanıt gövdesinin yazılması gereken bir dosya belirtir. Örneğin, --response:body "C:\response.json". Dosya yoksa oluşturulur.

  • --response:headers

    HTTP yanıt üst bilgisinin yazılması gereken bir dosya belirtir. Örneğin, --response:headers "C:\response.txt". Dosya yoksa oluşturulur.

  • -s|--streaming

    İletişim durumu HTTP yanıtının akışını etkinleştiren bir bayrak.

  • -c|--content

    Satır içi HTTP isteği gövdesi sağlar. Örneğin, -c "{\"id\":2,\"name\":\"Cherry\"}".

  • -f|--file

    HTTP isteği gövdesini içeren bir dosyanın yolunu sağlar. Örneğin, -f "C:\request.json".

  • --no-body

    HTTP isteği gövdesinin gerekli olmadığını gösterir.

HTTP HEAD isteklerini test etme

Özet

head <PARAMETER> [-F|--no-formatting] [-h|--header] [--response] [--response:body] [--response:headers] [-s|--streaming]

Bağımsız değişkenler

PARAMETER

Varsa, ilişkili denetleyici eylem yöntemi tarafından beklenen yol parametresi.

Seçenekler

  • -F|--no-formatting

    İletişim durumu HTTP yanıt biçimlendirmesini gizleyen bir bayrak.

  • -h|--header

    Bir HTTP isteği üstbilgisi ayarlar. Aşağıdaki iki dosya biçimi desteklenir:

    • {header}={value}
    • {header}:{value}
  • --response:body

    HTTP yanıt gövdesinin yazılması gereken bir dosya belirtir. Örneğin, --response:body "C:\response.json". Dosya yoksa oluşturulur.

  • --response:headers

    HTTP yanıt üst bilgisinin yazılması gereken bir dosya belirtir. Örneğin, --response:headers "C:\response.txt". Dosya yoksa oluşturulur.

  • -s|--streaming

    İletişim durumu HTTP yanıtının akışını etkinleştiren bir bayrak.

HTTP OPTIONS isteklerini test etme

Özet

options <PARAMETER> [-F|--no-formatting] [-h|--header] [--response] [--response:body] [--response:headers] [-s|--streaming]

Bağımsız değişkenler

PARAMETER

Varsa, ilişkili denetleyici eylem yöntemi tarafından beklenen yol parametresi.

Seçenekler

  • -F|--no-formatting

    İletişim durumu HTTP yanıt biçimlendirmesini gizleyen bir bayrak.

  • -h|--header

    Bir HTTP isteği üstbilgisi ayarlar. Aşağıdaki iki dosya biçimi desteklenir:

    • {header}={value}
    • {header}:{value}
  • --response:body

    HTTP yanıt gövdesinin yazılması gereken bir dosya belirtir. Örneğin, --response:body "C:\response.json". Dosya yoksa oluşturulur.

  • --response:headers

    HTTP yanıt üst bilgisinin yazılması gereken bir dosya belirtir. Örneğin, --response:headers "C:\response.txt". Dosya yoksa oluşturulur.

  • -s|--streaming

    İletişim durumu HTTP yanıtının akışını etkinleştiren bir bayrak.

HTTP isteği üstbilgisi ayarlama

HTTP isteği üst bilgisi ayarlamak için aşağıdaki yaklaşımlardan birini kullanın:

  • HTTP isteğiyle satır içi olarak ayarlayın. Örnek:

    https://localhost:5001/people> post -h Content-Type=application/json
    

    Yukarıdaki yaklaşımda, her ayrı HTTP isteği üst bilgisi kendi -h seçeneğini gerektirir.

  • HTTP isteğini göndermeden önce ayarlayın. Örnek:

    https://localhost:5001/people> set header Content-Type application/json
    

    İstek göndermeden önce üst bilgiyi ayarlarken, üst bilgi komut kabuğu oturumu süresi boyunca ayarlanmış olarak kalır. Üst bilgiyi temizlemek için boş bir değer sağlayın. Örnek:

    https://localhost:5001/people> set header Content-Type
    

Güvenli uç noktaları test etme

HttpRepl, güvenli uç noktaların testini aşağıdaki yollarla destekler:

  • Oturum açmış kullanıcının varsayılan kimlik bilgileri aracılığıyla.
  • HTTP isteği üst bilgilerini kullanarak.

Varsayılan kimlik bilgileri

IIS'de barındırılan ve Windows kimlik doğrulaması ile güvenliği sağlanan test ettiğiniz bir web API'sini düşünün. Aracı çalıştıran kullanıcının kimlik bilgilerinin test edilen HTTP uç noktalarına akmasını istiyor olun. Oturum açmış kullanıcının varsayılan kimlik bilgilerini geçmek için:

  1. httpClient.useDefaultCredentials tercihini true olarak ayarlayın:

    pref set httpClient.useDefaultCredentials true
    
  2. Web API'sine başka bir istek göndermeden önce araçtan çıkın ve aracı yeniden başlatın.

Varsayılan ara sunucu kimlik bilgileri

Test ettiğiniz web API'sinin Windows kimlik doğrulaması ile güvenli bir ara sunucu arkasında olduğu bir senaryoyu düşünün. Aracı çalıştıran kullanıcının kimlik bilgilerinin ara sunucuya akmasını istiyor olun. Oturum açmış kullanıcının varsayılan kimlik bilgilerini geçmek için:

  1. httpClient.proxy.useDefaultCredentials tercihini true olarak ayarlayın:

    pref set httpClient.proxy.useDefaultCredentials true
    
  2. Web API'sine başka bir istek göndermeden önce araçtan çıkın ve aracı yeniden başlatın.

HTTP isteği üstbilgileri

Desteklenen kimlik doğrulaması ve yetkilendirme düzenlerine örnek olarak şunlar verilebilir:

  • temel kimlik doğrulaması
  • JWT taşıyıcı belirteçleri
  • özet kimlik doğrulaması

Örneğin, aşağıdaki komutu kullanarak uç noktaya taşıyıcı belirteci gönderebilirsiniz:

set header Authorization "bearer <TOKEN VALUE>"

Azure tarafından barındırılan bir uç noktaya erişmek veya Azure REST API'sini kullanmak için taşıyıcı belirteci gerekir. Azure CLI aracılığıyla Azure aboneliğiniz için taşıyıcı belirteç almak üzere aşağıdaki adımları kullanın. HttpRepl, bir HTTP isteği üst bilgisinde taşıyıcı belirteci ayarlar. Azure App Service Web Apps listesi alınır.

  1. Azure'da Oturum Açın:

    az login
    
  2. Aşağıdaki komutla abonelik kimliğinizi alın:

    az account show --query id
    
  3. Abonelik kimliğinizi kopyalayın ve aşağıdaki komutu çalıştırın:

    az account set --subscription "<SUBSCRIPTION ID>"
    
  4. Aşağıdaki komutla taşıyıcı belirtecinizi alın:

    az account get-access-token --query accessToken
    
  5. HttpRepl aracılığıyla Azure REST API'sine bağlanın:

    httprepl https://management.azure.com
    
  6. Authorization HTTP isteği üst bilgisini ayarlayın:

    https://management.azure.com/> set header Authorization "bearer <ACCESS TOKEN>"
    
  7. Aboneliğe gitme:

    https://management.azure.com/> cd subscriptions/<SUBSCRIPTION ID>
    
  8. Aboneliğinizin Azure App Service Web Apps listesini alın:

    https://management.azure.com/subscriptions/{SUBSCRIPTION ID}> get providers/Microsoft.Web/sites?api-version=2016-08-01
    

    Aşağıdaki yanıt görüntülenir:

    HTTP/1.1 200 OK
    Cache-Control: no-cache
    Content-Length: 35948
    Content-Type: application/json; charset=utf-8
    Date: Thu, 19 Sep 2019 23:04:03 GMT
    Expires: -1
    Pragma: no-cache
    Strict-Transport-Security: max-age=31536000; includeSubDomains
    X-Content-Type-Options: nosniff
    x-ms-correlation-request-id: <em>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</em>
    x-ms-original-request-ids: <em>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</em>
    x-ms-ratelimit-remaining-subscription-reads: 11999
    x-ms-request-id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    x-ms-routing-request-id: WESTUS:xxxxxxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx
    {
      "value": [
        <AZURE RESOURCES LIST>
      ]
    }
    

HTTP isteği görüntülemeyi açma/kapatma

Varsayılan olarak, gönderilen HTTP isteğinin görüntülenmesi gizlenir. Komut kabuğu oturumu süresi boyunca ilgili ayar değiştirilebilir.

İstek görüntülemeyi etkinleştirme

echo on komutunu çalıştırarak gönderilen HTTP isteğini görüntüleyin. Örnek:

https://localhost:5001/people> echo on
Request echoing is on

Geçerli oturumdaki sonraki HTTP istekleri, istek üst bilgilerini görüntüler. Örnek:

https://localhost:5001/people> post

[main 2019-06-28T18:50:11.930Z] update#setState idle
Request to https://localhost:5001...

POST /people HTTP/1.1
Content-Length: 41
Content-Type: application/json
User-Agent: HTTP-REPL

{
  "id": 0,
  "name": "Scott Addie"
}

Response from https://localhost:5001...

HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8
Date: Fri, 28 Jun 2019 18:50:21 GMT
Location: https://localhost:5001/people/4
Server: Kestrel
Transfer-Encoding: chunked

{
  "id": 4,
  "name": "Scott Addie"
}


https://localhost:5001/people>

İstek görüntülemeyi devre dışı bırakma

echo off komutunu çalıştırarak gönderilen HTTP isteğinin görüntülenmesini engelleyin. Örnek:

https://localhost:5001/people> echo off
Request echoing is off

Betik çalıştırma

Sık sık aynı HttpRepl komutları kümesini yürütüyorsanız, bunları bir metin dosyasında depolamayı göz önünde bulundurun. Dosyadaki komutlar, komut satırında el ile yürütülen komutlar ile aynı biçimi alır. Komutlar, run komutu kullanılarak toplu olarak yürütülebilir. Örnek:

  1. Yeni satırla ayrılmış komut kümesini içeren bir metin dosyası oluşturun. Göstermek için, aşağıdaki komutları içeren bir people-script.txt dosyasını göz önünde bulundurun:

    set base https://localhost:5001
    ls
    cd People
    ls
    get 1
    
  2. run komutunu yürüterek metin dosyasının yolunu geçirin. Örnek:

    https://localhost:5001/> run C:\http-repl-scripts\people-script.txt
    

    Şu çıktı görünür:

    https://localhost:5001/> set base https://localhost:5001
    Using OpenAPI description at https://localhost:5001/swagger/v1/swagger.json
    
    https://localhost:5001/> ls
    .        []
    Fruits   [get|post]
    People   [get|post]
    
    https://localhost:5001/> cd People
    /People    [get|post]
    
    https://localhost:5001/People> ls
    .      [get|post]
    ..     []
    {id}   [get|put|delete]
    
    https://localhost:5001/People> get 1
    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Date: Fri, 12 Jul 2019 19:20:10 GMT
    Server: Kestrel
    Transfer-Encoding: chunked
    
    {
      "id": 1,
      "name": "Scott Hunter"
    }
    
    
    https://localhost:5001/People>
    

Çıkışı temizleme

HttpRepl aracı tarafından komut kabuğuna yazılan tüm çıkışı kaldırmak için clear veya cls komutunu çalıştırın. Göstermek için, komut kabuğunun aşağıdaki çıkışı içerdiğini düşünün:

httprepl https://localhost:5001
(Disconnected)> set base "https://localhost:5001"
Using OpenAPI description at https://localhost:5001/swagger/v1/swagger.json

https://localhost:5001/> ls
.        []
Fruits   [get|post]
People   [get|post]

https://localhost:5001/>

Çıkışı temizlemek için aşağıdaki komutu çalıştırın:

https://localhost:5001/> clear

Önceki komutu çalıştırdıktan sonra komut kabuğu yalnızca aşağıdaki çıkışı içerir:

https://localhost:5001/>

Ek kaynaklar