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).
Önkoş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.
Not
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. Örneğin:
httprepl https://localhost:5001
Alternatif olarak, HttpRepl çalışırken istediğiniz zaman aşağıdaki komutu çalıştırın:
connect <ROOT URI>
Örneğin:
(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>
Örneğin:
(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
Örneğin:
(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]
Web API'sinde gezinme
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. Örneğin:
https://localhost:5001/> ui
Uç noktaya gitme
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:
.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. Örneğin:
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 yoksacolors.json.string
kullanılır. - Bir
colors.json.string
değeri yoksacolors.json.literal
kullanılır. - Bir
colors.json.literal
değeri yoksacolors.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 girintisi boyutu özelleştirmesi şu anda yalnızca JSON için desteklenmektedir. Varsayılan boyut iki boşluktur. Örneğin:
[
{
"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:
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"
İpucu
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. Örneğin:
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. Örneğin:
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. Örneğin:
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:
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>
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:
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 JSON istek gövdesi medya türünü gösterecek şekilde ayarlanmıştır. Varsayılan metin düzenleyicisi, HTTP isteği gövdesini temsil eden bir JSON şablonu içeren bir .tmp dosyası açar. Örneğin:{ "id": 0, "name": "" }
İpucu
Varsayılan metin düzenleyicisini ayarlamak için Varsayılan metin düzenleyicisini ayarlama bölümüne bakın.
JSON şablonunu model doğrulama gereksinimlerini karşılayacak şekilde değiştirin:
{ "id": 0, "name": "Scott Addie" }
.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:
İ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" } ]
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 JSON istek gövdesi medya türünü gösterecek şekilde ayarlanmıştır. Varsayılan metin düzenleyicisi, HTTP isteği gövdesini temsil eden bir JSON şablonu içeren bir .tmp dosyası açar. Örneğin:{ "id": 0, "name": "" }
İpucu
Varsayılan metin düzenleyicisini ayarlamak için Varsayılan metin düzenleyicisini ayarlama bölümüne bakın.
JSON şablonunu model doğrulama gereksinimlerini karşılayacak şekilde değiştirin:
{ "id": 2, "name": "Cherry" }
.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
İsteğe bağlı: Değişiklikleri görmek için bir
get
komutu gönderin. Örneğin, metin düzenleyicisinde "Kiraz" yazarsanız, birget
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:
İ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" } ]
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
İsteğe bağlı: Değişiklikleri görmek için bir
get
komutu gönderin. Bu örnekte, birget
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. Örneğin:
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. Örneğin:
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. Örneğin:
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:
httpClient.useDefaultCredentials
tercihinitrue
olarak ayarlayın:pref set httpClient.useDefaultCredentials true
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:
httpClient.proxy.useDefaultCredentials
tercihinitrue
olarak ayarlayın:pref set httpClient.proxy.useDefaultCredentials true
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.
Azure'da Oturum Açın:
az login
Aşağıdaki komutla abonelik kimliğinizi alın:
az account show --query id
Abonelik kimliğinizi kopyalayın ve aşağıdaki komutu çalıştırın:
az account set --subscription "<SUBSCRIPTION ID>"
Aşağıdaki komutla taşıyıcı belirtecinizi alın:
az account get-access-token --query accessToken
HttpRepl aracılığıyla Azure REST API'sine bağlanın:
httprepl https://management.azure.com
Authorization
HTTP isteği üst bilgisini ayarlayın:https://management.azure.com/> set header Authorization "bearer <ACCESS TOKEN>"
Aboneliğe gitme:
https://management.azure.com/> cd subscriptions/<SUBSCRIPTION ID>
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. Örneğin:
https://localhost:5001/people> echo on
Request echoing is on
Geçerli oturumdaki sonraki HTTP istekleri, istek üst bilgilerini görüntüler. Örneğin:
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. Örneğin:
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. Örneğin:
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
run
komutunu yürüterek metin dosyasının yolunu geçirin. Örneğin: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 çı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
ASP.NET Core