Menguji API web dengan HttpRepl
HTTP Read-Eval-Print Loop (REPL) adalah:
- Alat baris perintah lintas platform ringan yang didukung di mana pun .NET Core didukung.
- Digunakan untuk membuat permintaan HTTP guna menguji ASP.NET Core API web (dan non-ASP.NET Core API web) dan melihat hasilnya.
- Mampu menguji API web yang dihosting di lingkungan apa pun, termasuk localhost dan Azure App Service.
Kata kerja HTTP berikut didukung:
Untuk mengikutinya, lihat atau unduh API web ASP.NET Core sampel (cara mengunduh).
Prasyarat
Penginstalan
Untuk menginstal HttpRepl, jalankan perintah berikut:
dotnet tool install -g Microsoft.dotnet-httprepl
.NET Core Global Tool diinstal dari paket NuGet Microsoft.dotnet-httprepl.
Catatan
Secara default arsitektur biner .NET yang akan diinstal mewakili arsitektur OS yang sedang berjalan. Untuk menentukan arsitektur OS yang berbeda, lihat penginstalan alat dotnet, opsi --arch. Untuk informasi selengkapnya, lihat Masalah GitHub dotnet/AspNetCore.Docs #29262.
Di macOS, perbarui jalur:
export PATH="$HOME/.dotnet/tools:$PATH"
Penggunaan
Setelah berhasil menginstal alat, jalankan perintah berikut untuk memulai HttpRepl:
httprepl
Untuk melihat perintah HttpRepl yang tersedia, jalankan salah satu dari perintah berikut:
httprepl -h
httprepl --help
Output berikut ditampilkan:
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 menawarkan penyelesaian perintah. Menekan tombol Tab akan mengulangi daftar perintah yang melengkapi karakter atau titik akhir API yang Anda ketik. Bagian berikut menguraikan perintah CLI yang tersedia.
Menghubungkan ke API web
Hubungkan ke API web dengan menjalankan perintah berikut:
httprepl <ROOT URI>
<ROOT URI>
adalah URI dasar untuk API web. Contohnya:
httprepl https://localhost:5001
Atau, jalankan perintah berikut kapan saja saat HttpRepl sedang berjalan:
connect <ROOT URI>
Contohnya:
(Disconnected)> connect https://localhost:5001
Arahkan secara manual ke deskripsi OpenAPI untuk API web
Perintah connect di atas akan mencoba menemukan deskripsi OpenAPI secara otomatis. Jika karena alasan tertentu tidak dapat melakukannya, Anda dapat menentukan URI deskripsi OpenAPI untuk API web dengan menggunakan opsi --openapi
:
connect <ROOT URI> --openapi <OPENAPI DESCRIPTION ADDRESS>
Contohnya:
(Disconnected)> connect https://localhost:5001 --openapi /swagger/v1/swagger.json
Aktifkan output verbose untuk detail tentang pencarian, penguraian, dan validasi deskripsi OpenAPI
Menentukan opsi --verbose
dengan perintah connect
akan menghasilkan lebih banyak detail saat alat mencari deskripsi OpenAPI, mengurai, dan memvalidasinya.
connect <ROOT URI> --verbose
Contohnya:
(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]
Navigasikan API web
Lihat titik akhir yang tersedia
Untuk membuat daftar titik akhir (pengontrol) yang berbeda di jalur alamat API web saat ini, jalankan perintah ls
atau dir
:
https://localhost:5001/> ls
Format output berikut ditampilkan:
. []
Fruits [get|post]
People [get|post]
https://localhost:5001/>
Output sebelumnya menunjukkan bahwa ada dua pengontrol yang tersedia: Fruits
dan People
. Kedua pengontrol mendukung operasi HTTP GET dan POST tanpa parameter.
Menavigasi ke pengontrol tertentu mengungkapkan lebih banyak detail. Misalnya, output perintah berikut menunjukkan pengontrol Fruits
juga mendukung operasi HTTP GET, PUT, dan DELETE. Setiap operasi ini mengharapkan parameter id
dalam rute:
https://localhost:5001/fruits> ls
. [get|post]
.. []
{id} [get|put|delete]
https://localhost:5001/fruits>
Atau, jalankan perintah ui
untuk membuka halaman UI Swagger API web di browser. Contohnya:
https://localhost:5001/> ui
Arahkan ke titik akhir
Untuk menavigasi ke titik akhir yang berbeda di API web, jalankan perintah cd
:
https://localhost:5001/> cd people
Jalur yang mengikuti perintah cd
tidak peka huruf besar/kecil. Format output berikut ditampilkan:
/people [get|post]
https://localhost:5001/people>
Menyesuaikan HttpRepl
Warna default HttpRepl dapat disesuaikan. Selain itu, editor teks default dapat ditentukan. Preferensi HttpRepl dipertahankan di sesi saat ini dan dihormati di sesi mendatang. Setelah dimodifikasi, preferensi disimpan dalam file berikut:
File .httpreplprefs dimuat saat startup dan tidak dipantau perubahannya saat runtime. Modifikasi manual pada file hanya berlaku setelah menghidupkan ulang alat.
Melihat pengaturan
Untuk melihat pengaturan yang tersedia, jalankan perintah pref get
. Contohnya:
https://localhost:5001/> pref get
Perintah sebelumnya menampilkan pasangan nilai kunci yang tersedia:
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
Atur preferensi warna
Pewarnaan respons saat ini hanya didukung untuk JSON. Untuk menyesuaikan pewarnaan alat HttpRepl default, temukan kunci yang sesuai dengan warna yang akan diubah. Untuk petunjuk tentang cara menemukan kunci, lihat bagian Melihat pengaturan. Misalnya, ubah nilai kunci colors.json
dari Green
menjadi White
sebagai berikut:
https://localhost:5001/people> pref set colors.json White
Hanya warna yang diizinkan yang dapat digunakan. Permintaan HTTP berikutnya menampilkan output dengan pewarnaan baru.
Saat tombol warna tertentu tidak diatur, lebih banyak tombol umum akan dipertimbangkan. Untuk mendemonstrasikan perilaku fallback ini, pertimbangkan contoh berikut:
- Jika
colors.json.name
tidak memiliki nilai,colors.json.string
digunakan. - Jika
colors.json.string
tidak memiliki nilai,colors.json.literal
digunakan. - Jika
colors.json.literal
tidak memiliki nilai,colors.json
digunakan. - Jika
colors.json
tidak memiliki nilai, warna teks default shell perintah (AllowedColors.None
) digunakan.
Atur ukuran lekukan
Kustomisasi ukuran indentasi respons saat ini hanya didukung untuk JSON. Ukuran default adalah dua spasi. Contohnya:
[
{
"id": 1,
"name": "Apple"
},
{
"id": 2,
"name": "Orange"
},
{
"id": 3,
"name": "Strawberry"
}
]
Untuk mengubah ukuran default, atur tombol formatting.json.indentSize
. Misalnya, untuk selalu menggunakan empat spasi:
pref set formatting.json.indentSize 4
Respons selanjutnya menghormati pengaturan empat ruang:
[
{
"id": 1,
"name": "Apple"
},
{
"id": 2,
"name": "Orange"
},
{
"id": 3,
"name": "Strawberry"
}
]
Mengatur editor teks default
Secara default, HttpRepl tidak memiliki editor teks yang dikonfigurasi untuk digunakan. Untuk menguji metode API web yang memerlukan isi permintaan HTTP, editor teks default harus diatur. Alat HttpRepl meluncurkan editor teks yang dikonfigurasi untuk tujuan menyusun isi permintaan. Jalankan perintah berikut untuk mengatur editor teks pilihan Anda sebagai default:
pref set editor.command.default "<EXECUTABLE>"
Pada perintah sebelumnya, <EXECUTABLE>
adalah jalur lengkap ke file yang dapat dijalankan editor teks. Misalnya, jalankan perintah berikut untuk mengatur Visual Studio Code sebagai editor teks default:
Untuk meluncurkan editor teks default dengan argumen CLI tertentu, atur kunci editor.command.default.arguments
. Misalnya, anggap Visual Studio Code adalah editor teks default dan Anda selalu ingin HttpRepl membuka Visual Studio Code di sesi baru dengan ekstensi dinonaktifkan. Jalankan perintah berikut:
pref set editor.command.default.arguments "--disable-extensions --new-window"
Tip
Jika editor default Anda adalah Visual Studio Code, Anda biasanya ingin meneruskan argumen -w
atau --wait
untuk memaksa Visual Studio Code menunggu Anda menutup file sebelum kembali.
Mengatur jalur pencarian Deskripsi OpenAPI
Secara default, HttpRepl memiliki set jalur relatif yang digunakannya untuk menemukan deskripsi OpenAPI saat menjalankan perintah connect
tanpa opsi --openapi
. Jalur relatif ini digabungkan dengan jalur akar dan dasar yang ditentukan dalam perintah connect
. Jalur relatif default adalah:
swagger.json
swagger/v1/swagger.json
/swagger.json
/swagger/v1/swagger.json
openapi.json
/openapi.json
Untuk menggunakan set jalur pencarian yang berbeda di lingkungan Anda, atur preferensi swagger.searchPaths
. Nilai harus berupa daftar jalur relatif yang dibatasi alur. Contohnya:
pref set swagger.searchPaths "swagger/v2/swagger.json|swagger/v3/swagger.json"
Sebagai ganti mengganti seluruh daftar default, daftar juga dapat dimodifikasi dengan menambahkan atau menghapus jalur.
Untuk menambahkan satu atau beberapa jalur pencarian ke daftar default, atur preferensi swagger.addToSearchPaths
. Nilai harus berupa daftar jalur relatif yang dibatasi alur. Contohnya:
pref set swagger.addToSearchPaths "openapi/v2/openapi.json|openapi/v3/openapi.json"
Untuk menghapus satu atau beberapa jalur pencarian dari daftar default, atur preferensi swagger.addToSearchPaths
. Nilai harus berupa daftar jalur relatif yang dibatasi alur. Contohnya:
pref set swagger.removeFromSearchPaths "swagger.json|/swagger.json"
Menguji permintaan GET HTTP
Sinopsis
get <PARAMETER> [-F|--no-formatting] [-h|--header] [--response:body] [--response:headers] [-s|--streaming]
Argumen
PARAMETER
Parameter rute, jika ada, diharapkan oleh metode tindakan pengontrol terkait.
Opsi
Opsi berikut tersedia untuk perintah get
:
-F|--no-formatting
Bendera yang kehadirannya menekan pemformatan respons HTTP.
-h|--header
Menetapkan header permintaan HTTP. Dua format nilai berikut didukung:
{header}={value}
{header}:{value}
--response:body
Menentukan file tempat isi respons HTTP harus ditulis. Contohnya,
--response:body "C:\response.json"
. File dibuat jika tidak ada.--response:headers
Menentukan file tempat header respons HTTP harus ditulis. Contohnya,
--response:headers "C:\response.txt"
. File dibuat jika tidak ada.-s|--streaming
Bendera yang kehadirannya memungkinkan streaming respons HTTP.
Contoh
Untuk menerbitkan permintaan HTTP GET:
Jalankan perintah
get
pada titik akhir yang mendukungnya:https://localhost:5001/people> get
Perintah sebelumnya menampilkan format output berikut:
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>
Ambil catatan tertentu dengan meneruskan parameter ke perintah
get
:https://localhost:5001/people> get 2
Perintah sebelumnya menampilkan format output berikut:
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>
Menguji permintaan HTTP POST
Sinopsis
post <PARAMETER> [-c|--content] [-f|--file] [-h|--header] [--no-body] [-F|--no-formatting] [--response] [--response:body] [--response:headers] [-s|--streaming]
Argumen
PARAMETER
Parameter rute, jika ada, diharapkan oleh metode tindakan pengontrol terkait.
Opsi
-F|--no-formatting
Bendera yang kehadirannya menekan pemformatan respons HTTP.
-h|--header
Menetapkan header permintaan HTTP. Dua format nilai berikut didukung:
{header}={value}
{header}:{value}
--response:body
Menentukan file tempat isi respons HTTP harus ditulis. Contohnya,
--response:body "C:\response.json"
. File dibuat jika tidak ada.--response:headers
Menentukan file tempat header respons HTTP harus ditulis. Contohnya,
--response:headers "C:\response.txt"
. File dibuat jika tidak ada.-s|--streaming
Bendera yang kehadirannya memungkinkan streaming respons HTTP.
-c|--content
Menyediakan isi permintaan HTTP sebaris. Contohnya,
-c "{\"id\":2,\"name\":\"Cherry\"}"
.-f|--file
Menyediakan jalur ke file yang berisi isi permintaan HTTP. Contohnya,
-f "C:\request.json"
.--no-body
Menunjukkan bahwa tidak diperlukan isi permintaan HTTP.
Contoh
Untuk menerbitkan permintaan HTTP POST:
Jalankan perintah
post
pada titik akhir yang mendukungnya:https://localhost:5001/people> post -h Content-Type=application/json
Dalam perintah sebelumnya,
Content-Type
header permintaan HTTP diatur untuk menunjukkan jenis media isi permintaan JSON. Editor teks default membuka file .tmp dengan templat JSON yang mewakili isi permintaan HTTP. Contohnya:{ "id": 0, "name": "" }
Tip
Untuk mengatur editor teks default, lihat bagian Mengatur editor teks default.
Ubah templat JSON untuk memenuhi persyaratan validasi model:
{ "id": 0, "name": "Scott Addie" }
Simpan file .tmp, dan tutup editor teks. Output berikut muncul di shell perintah:
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>
Menguji permintaan HTTP PUT
Sinopsis
put <PARAMETER> [-c|--content] [-f|--file] [-h|--header] [--no-body] [-F|--no-formatting] [--response] [--response:body] [--response:headers] [-s|--streaming]
Argumen
PARAMETER
Parameter rute, jika ada, diharapkan oleh metode tindakan pengontrol terkait.
Opsi
-F|--no-formatting
Bendera yang kehadirannya menekan pemformatan respons HTTP.
-h|--header
Menetapkan header permintaan HTTP. Dua format nilai berikut didukung:
{header}={value}
{header}:{value}
--response:body
Menentukan file tempat isi respons HTTP harus ditulis. Contohnya,
--response:body "C:\response.json"
. File dibuat jika tidak ada.--response:headers
Menentukan file tempat header respons HTTP harus ditulis. Contohnya,
--response:headers "C:\response.txt"
. File dibuat jika tidak ada.-s|--streaming
Bendera yang kehadirannya memungkinkan streaming respons HTTP.
-c|--content
Menyediakan isi permintaan HTTP sebaris. Contohnya,
-c "{\"id\":2,\"name\":\"Cherry\"}"
.-f|--file
Menyediakan jalur ke file yang berisi isi permintaan HTTP. Contohnya,
-f "C:\request.json"
.--no-body
Menunjukkan bahwa tidak diperlukan isi permintaan HTTP.
Contoh
Untuk menerbitkan permintaan HTTP PUT:
Opsional: Jalankan perintah
get
untuk melihat data sebelum mengubahnya: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" } ]
Jalankan perintah
put
pada titik akhir yang mendukungnya:https://localhost:5001/fruits> put 2 -h Content-Type=application/json
Dalam perintah sebelumnya,
Content-Type
header permintaan HTTP diatur untuk menunjukkan jenis media isi permintaan JSON. Editor teks default membuka file .tmp dengan templat JSON yang mewakili isi permintaan HTTP. Contohnya:{ "id": 0, "name": "" }
Tip
Untuk mengatur editor teks default, lihat bagian Mengatur editor teks default.
Ubah templat JSON untuk memenuhi persyaratan validasi model:
{ "id": 2, "name": "Cherry" }
Simpan file .tmp, dan tutup editor teks. Output berikut muncul di shell perintah:
[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
Opsional: Terbitkan perintah
get
untuk melihat modifikasi. Misalnya, jika Anda mengetik "Cherry" di editor teks,get
akan mengembalikan hasil berikut: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>
Menguji permintaan HTTP DELETE
Sinopsis
delete <PARAMETER> [-F|--no-formatting] [-h|--header] [--response] [--response:body] [--response:headers] [-s|--streaming]
Argumen
PARAMETER
Parameter rute, jika ada, diharapkan oleh metode tindakan pengontrol terkait.
Opsi
-F|--no-formatting
Bendera yang kehadirannya menekan pemformatan respons HTTP.
-h|--header
Menetapkan header permintaan HTTP. Dua format nilai berikut didukung:
{header}={value}
{header}:{value}
--response:body
Menentukan file tempat isi respons HTTP harus ditulis. Contohnya,
--response:body "C:\response.json"
. File dibuat jika tidak ada.--response:headers
Menentukan file tempat header respons HTTP harus ditulis. Contohnya,
--response:headers "C:\response.txt"
. File dibuat jika tidak ada.-s|--streaming
Bendera yang kehadirannya memungkinkan streaming respons HTTP.
Contoh
Untuk menerbitkan permintaan HTTP DELETE:
Opsional: Jalankan perintah
get
untuk melihat data sebelum mengubahnya: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" } ]
Jalankan perintah
delete
pada titik akhir yang mendukungnya:https://localhost:5001/fruits> delete 2
Perintah sebelumnya menampilkan format output berikut:
HTTP/1.1 204 No Content Date: Fri, 28 Jun 2019 17:36:42 GMT Server: Kestrel
Opsional: Terbitkan perintah
get
untuk melihat modifikasi. Dalam contoh ini,get
mengembalikan output berikut: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>
Menguji permintaan HTTP PATCH
Sinopsis
patch <PARAMETER> [-c|--content] [-f|--file] [-h|--header] [--no-body] [-F|--no-formatting] [--response] [--response:body] [--response:headers] [-s|--streaming]
Argumen
PARAMETER
Parameter rute, jika ada, diharapkan oleh metode tindakan pengontrol terkait.
Opsi
-F|--no-formatting
Bendera yang kehadirannya menekan pemformatan respons HTTP.
-h|--header
Menetapkan header permintaan HTTP. Dua format nilai berikut didukung:
{header}={value}
{header}:{value}
--response:body
Menentukan file tempat isi respons HTTP harus ditulis. Contohnya,
--response:body "C:\response.json"
. File dibuat jika tidak ada.--response:headers
Menentukan file tempat header respons HTTP harus ditulis. Contohnya,
--response:headers "C:\response.txt"
. File dibuat jika tidak ada.-s|--streaming
Bendera yang kehadirannya memungkinkan streaming respons HTTP.
-c|--content
Menyediakan isi permintaan HTTP sebaris. Contohnya,
-c "{\"id\":2,\"name\":\"Cherry\"}"
.-f|--file
Menyediakan jalur ke file yang berisi isi permintaan HTTP. Contohnya,
-f "C:\request.json"
.--no-body
Menunjukkan bahwa tidak diperlukan isi permintaan HTTP.
Menguji permintaan HTTP HEAD
Sinopsis
head <PARAMETER> [-F|--no-formatting] [-h|--header] [--response] [--response:body] [--response:headers] [-s|--streaming]
Argumen
PARAMETER
Parameter rute, jika ada, diharapkan oleh metode tindakan pengontrol terkait.
Opsi
-F|--no-formatting
Bendera yang kehadirannya menekan pemformatan respons HTTP.
-h|--header
Menetapkan header permintaan HTTP. Dua format nilai berikut didukung:
{header}={value}
{header}:{value}
--response:body
Menentukan file tempat isi respons HTTP harus ditulis. Contohnya,
--response:body "C:\response.json"
. File dibuat jika tidak ada.--response:headers
Menentukan file tempat header respons HTTP harus ditulis. Contohnya,
--response:headers "C:\response.txt"
. File dibuat jika tidak ada.-s|--streaming
Bendera yang kehadirannya memungkinkan streaming respons HTTP.
Menguji permintaan OPSI HTTP
Sinopsis
options <PARAMETER> [-F|--no-formatting] [-h|--header] [--response] [--response:body] [--response:headers] [-s|--streaming]
Argumen
PARAMETER
Parameter rute, jika ada, diharapkan oleh metode tindakan pengontrol terkait.
Opsi
-F|--no-formatting
Bendera yang kehadirannya menekan pemformatan respons HTTP.
-h|--header
Menetapkan header permintaan HTTP. Dua format nilai berikut didukung:
{header}={value}
{header}:{value}
--response:body
Menentukan file tempat isi respons HTTP harus ditulis. Contohnya,
--response:body "C:\response.json"
. File dibuat jika tidak ada.--response:headers
Menentukan file tempat header respons HTTP harus ditulis. Contohnya,
--response:headers "C:\response.txt"
. File dibuat jika tidak ada.-s|--streaming
Bendera yang kehadirannya memungkinkan streaming respons HTTP.
Mengatur header permintaan HTTP
Untuk mengatur header permintaan HTTP, gunakan salah satu pendekatan berikut:
Atur sebaris dengan permintaan HTTP. Contohnya:
https://localhost:5001/people> post -h Content-Type=application/json
Dengan pendekatan sebelumnya, setiap header permintaan HTTP yang berbeda memerlukan opsi
-h
sendiri.Atur sebelum mengirim permintaan HTTP. Contohnya:
https://localhost:5001/people> set header Content-Type application/json
Saat mengatur header sebelum mengirim permintaan, header tetap diatur selama sesi shell perintah. Untuk menghapus header, berikan nilai kosong. Contohnya:
https://localhost:5001/people> set header Content-Type
Menguji titik akhir yang aman
HttpRepl mendukung pengujian titik akhir aman dengan cara berikut:
- Melalui kredensial default dari pengguna yang masuk.
- Melalui penggunaan header permintaan HTTP.
Mandat default
Pertimbangkan API web yang Anda uji yang dihosting di IIS dan diamankan dengan autentikasi Windows. Anda ingin kredensial pengguna yang menjalankan alat mengalir ke titik akhir HTTP yang sedang diuji. Untuk meneruskan kredensial default pengguna yang masuk:
Atur preferensi
httpClient.useDefaultCredentials
ketrue
:pref set httpClient.useDefaultCredentials true
Keluar dan hidupkan ulang alat sebelum mengirim permintaan lain ke API web.
Kredensial proksi default
Pertimbangkan skenario di mana API web yang Anda uji berada di belakang proksi yang diamankan dengan autentikasi Windows. Anda ingin kredensial pengguna yang menjalankan alat mengalir ke proksi. Untuk meneruskan kredensial default pengguna yang masuk:
Atur preferensi
httpClient.proxy.useDefaultCredentials
ketrue
:pref set httpClient.proxy.useDefaultCredentials true
Keluar dan hidupkan ulang alat sebelum mengirim permintaan lain ke API web.
Header permintaan HTTP
Contoh skema autentikasi dan otorisasi yang didukung meliputi:
- autentikasi dasar
- Token pembawa JWT
- autentikasi digest
Misalnya, Anda dapat mengirim token pembawa ke titik akhir dengan perintah berikut:
set header Authorization "bearer <TOKEN VALUE>"
Untuk mengakses titik akhir yang dihosting Azure atau untuk menggunakan API Azure REST, Anda memerlukan token pembawa. Gunakan langkah-langkah berikut guna mendapatkan token pembawa untuk langganan Azure Anda melalui Azure CLI. HttpRepl menetapkan token pembawa di header permintaan HTTP. Daftar Azure App Service Web Apps diambil.
Masuk ke Azure:
az login
Dapatkan ID langganan Anda dengan perintah berikut:
az account show --query id
Salin ID langganan Anda dan jalankan perintah berikut:
az account set --subscription "<SUBSCRIPTION ID>"
Dapatkan token pembawa Anda dengan perintah berikut:
az account get-access-token --query accessToken
Hubungkan ke API REST Azure melalui HttpRepl:
httprepl https://management.azure.com
Atur header permintaan HTTP
Authorization
:https://management.azure.com/> set header Authorization "bearer <ACCESS TOKEN>"
Navigasikan ke langganan:
https://management.azure.com/> cd subscriptions/<SUBSCRIPTION ID>
Dapatkan daftar App Service Web Apps langganan Anda:
https://management.azure.com/subscriptions/{SUBSCRIPTION ID}> get providers/Microsoft.Web/sites?api-version=2016-08-01
Respons berikut ditampilkan:
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> ] }
Mengalihkan tampilan permintaan HTTP
Secara default, tampilan permintaan HTTP yang sedang dikirim tidak ditampilkan. Anda dapat mengubah pengaturan yang sesuai selama sesi shell perintah.
Mengaktifkan tampilan permintaan
Lihat permintaan HTTP yang dikirim dengan menjalankan perintah echo on
. Contohnya:
https://localhost:5001/people> echo on
Request echoing is on
Permintaan HTTP berikutnya dalam sesi saat ini menampilkan header permintaan. Contohnya:
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>
Menonaktifkan tampilan permintaan
Menekan tampilan permintaan HTTP yang sedang dikirim dengan menjalankan perintah echo off
. Contohnya:
https://localhost:5001/people> echo off
Request echoing is off
Menjalankan skrip
Jika Anda sering menjalankan kumpulan perintah HttpRepl yang sama, pertimbangkan untuk menyimpannya dalam file teks. Perintah dalam file mengambil bentuk yang sama dengan perintah yang dijalankan secara manual pada baris perintah. Perintah dapat dijalankan dalam batch menggunakan perintah run
. Contohnya:
Buat file teks yang berisi set perintah yang dibatasi baris baru. Sebagai ilustrasi, pertimbangkan file people-script.txt yang berisi perintah berikut:
set base https://localhost:5001 ls cd People ls get 1
Jalankan perintah
run
, dengan meneruskan jalur file teks. Contohnya:https://localhost:5001/> run C:\http-repl-scripts\people-script.txt
Output berikut muncul:
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>
Hapus output
Untuk menghapus semua output yang ditulis ke shell perintah oleh alat HttpRepl, jalankan perintah clear
atau cls
. Sebagai ilustrasi, bayangkan shell perintah berisi output berikut:
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/>
Jalankan perintah berikut untuk menghapus output:
https://localhost:5001/> clear
Setelah menjalankan perintah sebelumnya, shell perintah hanya berisi output berikut:
https://localhost:5001/>
Sumber Daya Tambahan:
ASP.NET Core