My that's a lot of acronyms. REPL means "Read Evaluate Print Loop." You know how you can run "python" and then just type 2+2 and get answer? That's a type of REPL.
The ASP.NET Core team is building a REPL that lets you explore and interact with your RESTful services. Ideally your services will have Swagger/OpenAPI available that describes the service. Right now this Http-REPL is just being developed and they're aiming to release it as a .NET Core Global Tool in .NET Core 2.2.
You can install global tools like this:
dotnet tool install -g nyancat
Then you can run "nyancat." Get a list of installed tools like this:
C:\Users\scott> dotnet tool list -g Package Id Version Commands -------------------------------------------------------------------- altcover.global 3.5.560 altcover dotnet-depends 0.1.0 dotnet-depends dotnet-httprepl 2.2.0-preview3-35304 dotnet-httprepl dotnet-outdated 2.0.0 dotnet-outdated dotnet-search 1.0.0 dotnet-search dotnet-serve 1.0.0 dotnet-serve git-status-cli 1.0.0 git-status github-issues-cli 1.0.0 ghi nukeeper 0.7.2 NuKeeper nyancat 1.0.0 nyancat project2015to2017.cli 1.8.1 csproj-to-2017
For the HTTP-REPL, since it's not yet released you have to point the Tool Feed to a daily build location, so do this:
dotnet tool install -g --version 2.2.0-* --add-source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json dotnet-httprepl
Then run it with "dotnet httprepl." I'd like another name? What do you think? RESTy? POSTr? API Test? API View?
Here's an example run where I start up a Web API.
C:\SwaggerApp> dotnet httprepl (Disconnected)~ set base http://localhost:65369 Using swagger metadata from http://localhost:65369/swagger/v1/swagger.json http://localhost:65369/~ dir . [] People [get|post] Values [get|post] http://localhost:65369/~ cd People /People [get|post] http://localhost:65369/People~ dir . [get|post] .. [] {id} [get] http://localhost:65369/People~ get HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Date: Wed, 26 Sep 2018 20:25:37 GMT Server: Kestrel Transfer-Encoding: chunked [ { "id": 1, "name": "Scott Hunter" }, { "id": 0, "name": "Scott Hanselman" }, { "id": 2, "name": "Scott Guthrie" } ]
Take a moment and read that. It can be a little confusing. It's not HTTPie, it's not Curl, but it's also not PostMan. it's something that you run and stay running if you're a command line person and enjoy that space. It's as if you "cd (change directory)" and "mount" a disk into your Web API.
You can use all the HTTP Verbs, and when POSTing you can set a default text editor and it will launch the editor with the JSON written for you! Give it a try!
A few gotchas/known issues:
- You'll want to set a default Content-Type Header for your session. I think this should be default.
-
- set header Content-Type application/json
- If the HTTP REPL doesn't automatically detect your Swagger/OpenAPI endpoint, you'll need to set it manually:
-
- set base https://yourapi/api/v1/
- set swagger https://yourapi/swagger.json
- I haven't figure out how to get it to use VS Code as its default editor. Likely because "code.exe" isn't a thing. (It uses a batch .cmd file, which the HTTP REPL would need to special case). For now, use an editor that's an EXE and point the HTTP REPL like this:
-
- pref set editor.command.default 'c:\notepad2.exe'
I'm really enjoy this idea. I'm curious how you find it and how you'd see it being used. Sound off in the comments.
Sponsor: Rider 2018.2 is here! Publishing to IIS, Docker support in the debugger, built-in spell checking, MacBook Touch Bar support, full C# 7.3 support, advanced Unity support, and more.
© 2018 Scott Hanselman. All rights reserved.
from Scott Hanselman's Blog http://feeds.hanselman.com/~/571584580/0/scotthanselman~A-commandline-REPL-for-RESTful-HTTP-Services.aspx
Comments
Post a Comment