May 06, 2016
Hello,
    I have been programming in D now for a few months, and I am really impressed by how easy it is to get things up and running.
    However, I have run into some problems with vibe.d. I can't seem to figure out how to pass a get parameter after searching online for a few days.

    The code is more or less as below. I have tried lots of variations on how to add an input parameter (using something/:id etc) but everything gives a 404 error.

    Any help would be greatly appreciated. Thanks !

http://localhost:8081/something?id=a ( <---- this gives 404 )

import vibe.d;
import std.stdio;
import std.conv;
import std.json;

shared static this()
{
	auto router = new URLRouter;

	router.registerRestInterface(new ApiImpl);

	auto settings = new HTTPServerSettings;
	settings.port = 8081;
	listenHTTP(settings, router);

	logInfo("Please open http://127.0.0.1:8081/ in your browser.");
}

 interface Api
 {
     @method(HTTPMethod.GET) @path("/something/")
     string getSomething(string id);
 }

 class ApiImpl: Api
 {
     override:
         string getSomething(string id)
         {
             return id ~ "\nhello word";
         }
 }
May 06, 2016
There are two problems here.

1) Your problem comes from the fact that `id` parameter name has been special cased since early vibe.d versions to mean URL parameter. If you enable `setLogLevel(LogLevel.debug_);` in the very beginning of module constructor, you will see this trace:

REST route: GET /:id/something/ []
add route GET /:id/something/

It basically automatically rewrites route to prepend :id and treats `string id` as if it was `string _id`.

2) Changing the name of string argument to `xxx` still doesn't work and now prints this in debug trace:

REST route: GET /something/ ["xxx"]
add route GET /something/

Note the / in the end. Vibe.d does exact matching of slashes in the version I have checked so you would have to request http://127.0.0.1:8081/something/?xxx=a to get response.

So to make URL you want to work you'd need to do something like this:

```
interface Api
{
    @method(HTTPMethod.GET) @path("/something")
    string getSomething(string xxx);
}
```