Bagikan melalui


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]

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

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:

%HOME%/.httpreplprefs

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:

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

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:

  1. 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>
    
  2. 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:

  1. 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.

  2. Ubah templat JSON untuk memenuhi persyaratan validasi model:

    {
      "id": 0,
      "name": "Scott Addie"
    }
    
  3. 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:

  1. 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"
      }
    ]
    
  2. 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.

  3. Ubah templat JSON untuk memenuhi persyaratan validasi model:

    {
      "id": 2,
      "name": "Cherry"
    }
    
  4. 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
    
  5. 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:

  1. 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"
      }
    ]
    
  2. 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
    
  3. 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:

  1. Atur preferensi httpClient.useDefaultCredentials ke true:

    pref set httpClient.useDefaultCredentials true
    
  2. 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:

  1. Atur preferensi httpClient.proxy.useDefaultCredentials ke true:

    pref set httpClient.proxy.useDefaultCredentials true
    
  2. 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.

  1. Masuk ke Azure:

    az login
    
  2. Dapatkan ID langganan Anda dengan perintah berikut:

    az account show --query id
    
  3. Salin ID langganan Anda dan jalankan perintah berikut:

    az account set --subscription "<SUBSCRIPTION ID>"
    
  4. Dapatkan token pembawa Anda dengan perintah berikut:

    az account get-access-token --query accessToken
    
  5. Hubungkan ke API REST Azure melalui HttpRepl:

    httprepl https://management.azure.com
    
  6. Atur header permintaan HTTP Authorization:

    https://management.azure.com/> set header Authorization "bearer <ACCESS TOKEN>"
    
  7. Navigasikan ke langganan:

    https://management.azure.com/> cd subscriptions/<SUBSCRIPTION ID>
    
  8. 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:

  1. 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
    
  2. 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: