HttpRepl ile Web API 'Lerini test etme

Scott Ade tarafından

HTTP okuma-değerlendirme-yazdırma döngüsü (REPL):

  • .NET Core 'un her yerde desteklenen basit, platformlar arası bir komut satırı aracı desteklenir.
  • ASP.NET Core web apı 'lerini (ve ASP.NET Core olmayan web apı 'lerini) test etmek ve sonuçlarını görüntülemek için kullanılır.
  • Localhost ve Azure App Service dahil olmak üzere herhangi bir ortamda barındırılan Web API 'Lerini test etme özelliğine sahiptir.

Aşağıdaki http fiilleri desteklenir:

takip etmek için, örnek ASP.NET Core web apı 'sini (indirme) görüntüleyin veya indirin.

Önkoşullar

Yükleme

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

dotnet tool install -g Microsoft.dotnet-httprepl

.net Core küresel aracı , Microsoft. dotnet-httprepl NuGet paketinden yüklenir.

Kullanım

Aracın başarıyla yüklenmesinden sonra, HttpRepl 'yi başlatmak için aşağıdaki komutu çalıştırı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 komut tamamlama sağlar. Sekme tuşuna basıldığında, yazdığınız KARAKTERLERI veya API uç noktasını tamamlayacak komutların listesi üzerinden yinelenir. Aşağıdaki bölümlerde kullanılabilir CLı komutları ana hatlarıyla verilmiştir.

web apı 'sine Bağlan

aşağıdaki komutu çalıştırarak bir web apı 'sine Bağlan:

httprepl <ROOT URI>

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

httprepl https://localhost:5001

Alternatif olarak, HttpRepl çalışırken herhangi bir zamanda aşağıdaki komutu çalıştırın:

connect <ROOT URI>

Örnek:

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

Web API 'SI için Openapı açıklamasına el ile işaret edin

Yukarıdaki Connect komutu, Openapı açıklamasını otomatik olarak bulmaya çalışacaktır. Bir nedenden dolayı bunu yapamaması durumunda, Web API 'SI için Openapı açıklamasının URI 'sini belirterek --openapi seçeneğini kullanabilirsiniz:

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

Örnek:

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

Openapı açıklaması arama, ayrıştırma ve doğrulama hakkındaki ayrıntılar için ayrıntılı çıktıyı etkinleştirin

--verboseKomut ile seçeneğinin belirtilmesi, connect araç openapı açıklamasını aradığında, ayrıştırdığında ve doğruladığı zaman daha fazla ayrıntı üretecektir.

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üle

Web API adresinin geçerli yolundaki farklı uç noktaları (denetleyiciler) 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 gezinmek daha ayrıntılı bilgi gösterir. Örneğin, aşağıdaki komut çıktısı, Fruits denetleyiciyi de http get, put ve DELETE işlemlerini destekler. Bu işlemlerin her biri id , rotada bir parametre bekler:

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

https://localhost:5001/fruits>

Alternatif olarak, ui Web API 'Sinin Swagger Kullanıcı Arabirimi sayfasını bir tarayıcıda açmak için komutunu çalıştırın. Örnek:

https://localhost:5001/> ui

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

https://localhost:5001/> cd people

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

/people    [get|post]

https://localhost:5001/people>

HttpRepl 'yi özelleştirme

HttpRepl 'nin varsayılan renkleri özelleştirilebilir. Ayrıca, varsayılan bir metin Düzenleyicisi tanımlanabilir. HttpRepl tercihleri geçerli oturum genelinde kalıcı hale getirilir ve gelecekteki oturumlarla kabul edilir. Değiştirildikten sonra, Tercihler aşağıdaki dosyada depolanır:

% GIRIŞ%/. httpreplprefs

. Httpreplprefs dosyası başlangıçta yüklendi ve çalışma zamanında değişiklikler için izlenmiyor. Dosyada el ile yapılan değişiklikler yalnızca araç yeniden başlatıldıktan sonra devreye girer.

Ayarları görüntüleyin

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 ayarla

Yanıt renklendirme Şu anda yalnızca JSON için destekleniyor. Varsayılan HttpRepl araç renklendirmesini özelleştirmek için, değiştirilecek renge karşılık gelen anahtarı bulun. Anahtarları bulma hakkında yönergeler için bkz. ayarları görüntüleme bölümü. Örneğin, colors.json anahtar değerini şu şekilde olacak şekilde Green değiştirin White :

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

Yalnızca izin verilen renkler kullanılabilir. Sonraki HTTP istekleri, yeni renklendirmesi ile çıktıyı görüntüler.

Belirli renk anahtarları ayarlanmamışsa, daha genel anahtarlar kabul edilir. Bu geri dönüş davranışını göstermek için aşağıdaki örneği göz önünde bulundurun:

  • Eğer colors.json.name bir değeri yoksa, colors.json.string kullanılır.
  • Eğer colors.json.string bir değeri yoksa, colors.json.literal kullanılır.
  • Eğer colors.json.literal bir değeri yoksa, colors.json kullanılır.
  • colors.jsonBir değere sahip değilse, komut kabuğun varsayılan metin rengi ( AllowedColors.None ) kullanılır.

Girinti boyutunu ayarla

Yanıt girintileme boyut özelleştirmesi Şu anda yalnızca JSON için destekleniyor. Varsayılan boyut iki boşluklardan oluşamaz. Ö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ı 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ına uyar:

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

Varsayılan metin düzenleyiciyi ayarlama

Varsayılan olarak, HttpRepl 'nin kullanılmak üzere yapılandırılmış metin Düzenleyicisi yok. HTTP istek gövdesi gerektiren Web API yöntemlerini test etmek için varsayılan metin Düzenleyicisi ayarlanmalıdır. HttpRepl Aracı, istek gövdesini oluşturma amacıyla yapılandırılmış metin düzenleyicisini başlatır. Tercih ettiğiniz metin düzenleyiciyi varsayılan olarak ayarlamak için aşağıdaki komutu çalıştırın:

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

Yukarıdaki komutta, <EXECUTABLE> Metin düzenleyicisinin yürütülebilir dosyasının tam yoludur. örneğin, Visual Studio Code 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"

Varsayılan metin düzenleyiciyi belirli CLı bağımsız değişkenleriyle başlatmak için editor.command.default.arguments anahtarı ayarlayın. örneğin, Visual Studio Code varsayılan metin düzenleyicisi olduğunu ve her zaman httprepl 'nin, uzantılar devre dışı bırakılmış yeni bir oturumda Visual Studio Code açmasını istediğinizi varsayalım. Şu komutu çalıştırın:

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

İpucu

varsayılan düzenleyiciniz Visual Studio Code, genellikle -w veya --wait bağımsız değişkeni, döndürmeden önce dosyayı kapatmanızı beklemek için Visual Studio Code zorlamak üzere geçirmek isteyeceksiniz.

Openapı açıklaması arama yollarını ayarlama

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

  • Üzerindeswagger.js
  • Swagger/v1/swagger.jsaçık
  • /swagger.js
  • /Swagger/v1/swagger.js
  • Üzerindeopenapi.js
  • /openapi.js

Ortamınızda farklı bir arama yolları kümesi kullanmak için swagger.searchPaths tercihi ayarlayın. Değer, göreli yolların kanal ile 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, liste yol ekleyerek veya kaldırarak da değiştirilebilir.

Varsayılan listeye bir veya daha fazla arama yolu eklemek için swagger.addToSearchPaths tercihi ayarlayın. Değer, göreli yolların kanal ile 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 yolunu kaldırmak için swagger.addToSearchPaths tercihi ayarlayın. Değer, göreli yolların kanal ile ayrılmış bir listesi olmalıdır. Örnek:

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

HTTP GET isteklerini test etme

Özeti

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 rota parametresi.

Seçenekler

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

  • -F|--no-formatting

    Varlığı HTTP yanıt biçimlendirmesini bastıran bir bayrak.

  • -h|--header

    Bir HTTP isteği üst bilgisi ayarlar. Aşağıdaki iki değer biçimi de desteklemektedir:

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

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

  • --response:headers

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

  • -s|--streaming

    Http yanıtının akışını sağlayan bir bayrak.

Örnek

HTTP GET isteği vermek için:

  1. getKomutu onu destekleyen bir uç noktada çalıştırın:

    https://localhost:5001/people> get
    

    Yukarıdaki 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. Komutuna bir parametre geçirerek belirli bir kaydı alın get :

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

    Yukarıdaki 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 et

Özeti

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 rota parametresi.

Seçenekler

  • -F|--no-formatting

    Varlığı HTTP yanıt biçimlendirmesini bastıran bir bayrak.

  • -h|--header

    Bir HTTP isteği üst bilgisi ayarlar. Aşağıdaki iki değer biçimi de desteklemektedir:

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

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

  • --response:headers

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

  • -s|--streaming

    Http yanıtının akışını sağlayan bir bayrak.

  • -c|--content

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

  • -f|--file

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

  • --no-body

    HTTP istek gövdesine gerek olmadığını gösterir.

Örnek

HTTP POST isteği vermek için:

  1. postKomutu onu destekleyen bir uç noktada çalıştırın:

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

    Önceki komutta, Content-Type http istek üst bilgisi, JSON türünde bir istek gövdesi medya türünü gösterecek şekilde ayarlanır. Varsayılan metin Düzenleyicisi, HTTP istek gövdesini temsil eden bir JSON şablonuyla bir . tmp dosyası açar. Örnek:

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

    İpucu

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

  2. JSON şablonunu model doğrulama gereksinimlerini karşılayacak şekilde değiştirin:

    {
      "id": 0,
      "name": "Scott Addie"
    }
    
  3. . Tmp dosyasını kaydedin ve metin düzenleyicisini kapatın. Aşağıdaki çıktı komut kabuğu 'nda görünür:

    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

Özeti

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 rota parametresi.

Seçenekler

  • -F|--no-formatting

    Varlığı HTTP yanıt biçimlendirmesini bastıran bir bayrak.

  • -h|--header

    Bir HTTP isteği üst bilgisi ayarlar. Aşağıdaki iki değer biçimi de desteklemektedir:

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

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

  • --response:headers

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

  • -s|--streaming

    Http yanıtının akışını sağlayan bir bayrak.

  • -c|--content

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

  • -f|--file

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

  • --no-body

    HTTP istek gövdesine gerek olmadığını gösterir.

Örnek

HTTP PUT isteği vermek için:

  1. Isteğe bağlı: get verileri değiştirmeden önce görüntülemek için 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. putKomutu onu destekleyen bir uç noktada çalıştırın:

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

    Önceki komutta, Content-Type http istek üst bilgisi, JSON türünde bir istek gövdesi medya türünü gösterecek şekilde ayarlanır. Varsayılan metin Düzenleyicisi, HTTP istek gövdesini temsil eden bir JSON şablonuyla bir . tmp dosyası açar. Örnek:

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

    İpucu

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

  3. JSON şablonunu model doğrulama gereksinimlerini karşılayacak şekilde değiştirin:

    {
      "id": 2,
      "name": "Cherry"
    }
    
  4. . Tmp dosyasını kaydedin ve metin düzenleyicisini kapatın. Aşağıdaki çıktı komut kabuğu 'nda görünür:

    [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. Isteğe bağlı: get değişiklikleri görmek için bir komut verin. Örneğin, metin düzenleyicisinde "Chraz" yazdıysanız, bir, get aşağıdaki çıktıyı 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 SILME isteklerini test etme

Özeti

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 rota parametresi.

Seçenekler

  • -F|--no-formatting

    Varlığı HTTP yanıt biçimlendirmesini bastıran bir bayrak.

  • -h|--header

    Bir HTTP isteği üst bilgisi ayarlar. Aşağıdaki iki değer biçimi de desteklemektedir:

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

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

  • --response:headers

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

  • -s|--streaming

    Http yanıtının akışını sağlayan bir bayrak.

Örnek

HTTP SILME isteği vermek için:

  1. Isteğe bağlı: get verileri değiştirmeden önce görüntülemek için 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. deleteKomutu onu destekleyen bir uç noktada çalıştırın:

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

    Yukarıdaki 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. Isteğe bağlı: get değişiklikleri görmek için bir komut verin. Bu örnekte, bir, get aşağıdaki çıktıyı 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

Özeti

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 rota parametresi.

Seçenekler

  • -F|--no-formatting

    Varlığı HTTP yanıt biçimlendirmesini bastıran bir bayrak.

  • -h|--header

    Bir HTTP isteği üst bilgisi ayarlar. Aşağıdaki iki değer biçimi de desteklemektedir:

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

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

  • --response:headers

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

  • -s|--streaming

    Http yanıtının akışını sağlayan bir bayrak.

  • -c|--content

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

  • -f|--file

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

  • --no-body

    HTTP istek gövdesine gerek olmadığını gösterir.

HTTP HEAD isteklerini test etme

Özeti

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 rota parametresi.

Seçenekler

  • -F|--no-formatting

    Varlığı HTTP yanıt biçimlendirmesini bastıran bir bayrak.

  • -h|--header

    Bir HTTP isteği üst bilgisi ayarlar. Aşağıdaki iki değer biçimi de desteklemektedir:

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

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

  • --response:headers

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

  • -s|--streaming

    Http yanıtının akışını sağlayan bir bayrak.

Sınama HTTP SEÇENEKLERI istekleri

Özeti

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 rota parametresi.

Seçenekler

  • -F|--no-formatting

    Varlığı HTTP yanıt biçimlendirmesini bastıran bir bayrak.

  • -h|--header

    Bir HTTP isteği üst bilgisi ayarlar. Aşağıdaki iki değer biçimi de desteklemektedir:

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

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

  • --response:headers

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

  • -s|--streaming

    Http yanıtının akışını sağlayan bir bayrak.

HTTP istek üst bilgilerini ayarla

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 seçeneğini -h gerektirir.

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

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

    Bir istek göndermeden önce üst bilgi ayarlanırken, üst bilgi komut kabuğu oturumu süresince ayarlanmış olarak kalır. Üst bilgiyi temizlemek için boş bir değer girin. Örnek:

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

Güvenli uç noktaları test etmek

HttpRepl, güvenli uç noktaların test aşağıdaki yollarla test güvence altına alınmıştır:

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

Varsayılan kimlik bilgileri

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

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

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

Varsayılan ara sunucu kimlik bilgileri

Test etmekte olduğunu web API'sini güvenli bir ara sunucu ve kimlik doğrulaması ile Windows düşünün. Aracı çalıştıran kullanıcının kimlik bilgilerinin ara sunucuya akmalarını isteme. Oturum açmış kullanıcının varsayılan kimlik bilgilerini geçmek için:

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

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

HTTP isteği üst bilgileri

Desteklenen kimlik doğrulaması ve yetkilendirme şemalarının örnekleri şunlardır:

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

Örneğin, aşağıdaki komutu kullanarak bir uç noktasına taşıyıcı belirteç gönderebilirsiniz:

set header Authorization "bearer <TOKEN VALUE>"

Azure'da barındırılan bir uç noktasına erişmek veya Azure REST APIkullanmak için bir taşıyıcı belirtecin 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. Bir Azure App Service Web Apps alınır.

  1. Azure'da oturum açma:

    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ı belirtecini alın:

    az account get-access-token --query accessToken
    
  5. Bağlan HttpRepl aracılığıyla REST API Azure REST API'e erişin:

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

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

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

    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 değiştir

Varsayılan olarak, gönderilen HTTP isteğinin görüntüsü gizlenr. Komut kabuğu oturumu süresince ilgili ayarı değiştirmek mümkündür.

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

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

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

Geçerli oturumda 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

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

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

Betik çalıştırma

Sık sık aynı HttpRepl komutlarını yürütürsanız, bunları bir metin dosyasında depolamayı göz önünde bulundurabilirsiniz. Dosyada yer alan komutlar, komut satırı üzerinde el ile yürütülen komutlar ile aynı forma sahip olur. Komutlar, komutu kullanılarak toplu olarak run yürütülebilirsiniz. Örnek:

  1. Yeni satırla ayrılmış komutlar kümesi içeren bir metin dosyası oluşturun. Göstermek için aşağıdaki komutları people-script.txt bir dosya düşünün:

    set base https://localhost:5001
    ls
    cd People
    ls
    get 1
    
  2. Komutunu run yürütün ve metin dosyasının yolunu geçirme. Örnek:

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

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

    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 çıktıları kaldırmak için veya clear komutunu cls ç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/>

Çıktıyı 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