htty: Ruby console application for interacting with web servers

htty screenshot

http://htty.github.io/htty/


From the htty home page:

Features

  • Intuitive, Tab-completed commands and command aliases
  • Support for familiar HTTP methods GET, POST, PUT, and DELETE, as well as PATCH, HEAD, OPTIONS and TRACE
  • Support for HTTP Secure connections and HTTP Basic Authentication
  • Automatic URL-encoding of userinfo, paths, query-string parameters, and page fragments
  • Transcripts, both verbose and summary
  • Scripting via stdin
  • Dead-simple cookie handling and redirect following
  • Built-in help

The things you can do with htty are:

  • Build a request — you can tweak the address, headers, cookies, and body at will
  • Send the request to the server — after the request is sent, it remains unchanged in your session history
  • Inspect the server’s response — you can look at the status, headers, cookies, and body in various ways
  • Review history — a normal and a verbose transcript of your session are available at all times (destroyed when you quit htty)
  • Reuse previous requests — you can refer to prior requests and copy them

MockServer: Java tool to mock any system you integrate with via HTTP or HTTPS

MockServer logo

http://www.mock-server.com/


From the Mockserver web page:

Why use MockServer?

MockServer allows you to mock any server or service that you connect to over HTTP or HTTPS, such as a REST or RPC service.

This is useful in the following scenarios:

Testing

  • easily recreate all types of responses for HTTP dependencies such as REST or RPC services to test applications easily and affectively
  • isolate the system-under-test to ensure tests run reliably and only fail when there is a genuine bug. It is important only the system-under-test is tested and not its dependencies to avoid tests failing due to irrelevant external changes such as network failure or a server being rebooted / redeployed.
  • easily setup mock responses independently for each test to ensure test data is encapsulated with each test. Avoid sharing data between tests that is difficult to manage and maintain and risks tests infecting each other
  • create test assertions that verify the requests the system-under-test has sent

De-coupling development

  • start working against a service API before the service is available. If an API or service is not yet fully developed MockServer can mock the API allowing any team who is using the service to start work without being delayed
  • isolate development teams during the initial development phases when the APIs / services may be extremely unstable and volatile. Using MockServer allows development work to continue even when an external service fails

isolate single service

  • during deployment and debugging it is helpful to run a single application or service or handle a sub-set of requests on on a local machine in debug mode. Using MockServer it is easy to selectively forward requests to a local process running in debug mode, all other request can be forwarded to the real services for example running in a QA or UAT environment

Guzzle: PHP HTTP client and framework for building RESTful web service clients

http://docs.guzzlephp.org/en/latest/

Github page here: https://github.com/guzzle/guzzle

$client = new GuzzleHttp\Client();
$response = $client->get('http://guzzlephp.org');
$res = $client->get('https://api.github.com/user', ['auth' =>  ['user', 'pass']]);
echo $res->getStatusCode();
// "200"
echo $res->getHeader('content-type');
// 'application/json; charset=utf8'
echo $res->getBody();
// {"type":"User"...'
var_export($res->json());
// Outputs the JSON decoded data

// Send an asynchronous request.
$req = $client->createRequest('GET', 'http://httpbin.org', ['future' => true]);
$client->send($req)->then(function ($response) {
    echo 'I completed! ' . $response;
});

Dropwizard: Java framework for developing ops-friendly, RESTful web services

Dropwizard logo

https://dropwizard.github.io/dropwizard/

From the website:

Dropwizard pulls together stable, mature libraries from the Java ecosystem into a simple, light-weight package that lets you focus on getting things done.

Dropwizard has out-of-the-box support for sophisticated configuration, application metrics, logging, operational tools, and much more, allowing you and your team to ship a production-quality web service in the shortest time possible.

Also take a look at this page for a list of the components used in Dropwizard. In short, it uses:
Jetty for HTTP
Jersey for REST
Jackson for JSON
Metrics for metrics
– And a bunch of other tools for logging, templating, database access, et al.

Dropwizard logo