Skip to main content
Version: 1.x

TinyGo HTTP Password Checker

This example is a WebAssembly Component written in TinyGo, which:

Dependencies

Before starting, ensure that you have the following installed in addition to the Go toolchain:

Quickstart

To get started developing this repository quickly, clone the repo and run wash dev:

console
wash dev

wash dev does many things for you:

  • Starts the wasmCloud host that can run your WebAssembly component
  • Builds this project
  • Builds a declarative WADM manifest consisting of:
    • Your locally built component
    • A HTTP server provider which will receive requests from the outside world (on port 8000 by default)
    • Necessary links between providers and your component so your component can handle web traffic
  • Deploys the built manifest (i.e all dependencies to run this application) locally
  • Watches your code for changes and re-deploys when necessary.

Send a request to the running component

Once wash dev is serving your component, to send a request to the running component (via the HTTP server provider):

console
curl localhost:8000/api/v1/check -d '{"value": "tes12345!"}'

You should see a JSON response like:

json
{
    "valid": false, "message": "insecure password, try including more special characters, using uppercase letters or using a longer password"
}

Adding Capabilities

To learn how to extend this example with additional capabilities, see the Adding Capabilities section of the wasmCloud documentation.

Issues/ FAQ

curl produces a "failed to invoke" error

If curling produces

➜ curl localhost:8000
failed to invoke `wrpc:http/incoming-handler.handle`: failed to invoke `wrpc:http/incoming-handler@0.1.0.handle`: failed to shutdown synchronous parameter channel: not connected%

You may need to just wait a little bit -- the HTTP server takes a second or two to start up.

If the issue persists, you may have a lingering HTTP server provider running on your system. You can use pgrep to find it:

console
❯ pgrep -la ghcr_io
4007604 /tmp/wasmcloudcache/NBCBQOZPJXTJEZDV2VNY32KGEMTLFVP2XJRZJ5FWEJJOXESJXXR2RO46/ghcr_io_wasmcloud_http_server_0_23_1