com.seanshubin.http.values:http-values-parent

HTTP as a pure function

Лицензия

Лицензия

Группа

Группа

com.seanshubin.http.values
Идентификатор

Идентификатор

http-values-parent
Последняя версия

Последняя версия

1.0.1
Дата

Дата

Тип

Тип

pom
Описание

Описание

com.seanshubin.http.values:http-values-parent
HTTP as a pure function
Ссылка на сайт

Ссылка на сайт

https://github.com/SeanShubin/http-values
Система контроля версий

Система контроля версий

https://github.com/SeanShubin/http-values

Скачать http-values-parent

Имя Файла Размер
http-values-parent-1.0.1.pom 8 KB
Обзор

Как подключить последнюю версию

<!-- https://jarcasting.com/artifacts/com.seanshubin.http.values/http-values-parent/ -->
<dependency>
    <groupId>com.seanshubin.http.values</groupId>
    <artifactId>http-values-parent</artifactId>
    <version>1.0.1</version>
    <type>pom</type>
</dependency>
// https://jarcasting.com/artifacts/com.seanshubin.http.values/http-values-parent/
implementation 'com.seanshubin.http.values:http-values-parent:1.0.1'
// https://jarcasting.com/artifacts/com.seanshubin.http.values/http-values-parent/
implementation ("com.seanshubin.http.values:http-values-parent:1.0.1")
'com.seanshubin.http.values:http-values-parent:pom:1.0.1'
<dependency org="com.seanshubin.http.values" name="http-values-parent" rev="1.0.1">
  <artifact name="http-values-parent" type="pom" />
</dependency>
@Grapes(
@Grab(group='com.seanshubin.http.values', module='http-values-parent', version='1.0.1')
)
libraryDependencies += "com.seanshubin.http.values" % "http-values-parent" % "1.0.1"
[com.seanshubin.http.values/http-values-parent "1.0.1"]

Зависимости

Библиотека не имеет зависимостей. Это самодостаточное приложение, которое не зависит ни от каких других библиотек.

Модули Проекта

  • domain
  • server-jetty
  • client-apache
  • client-google

Http Values

Http without mutable state

Rationale

Java's servlet api is designed around side effects on the response. It has a signature like this:

javax.servlet.Servlet
public void service(ServletRequest req,
                    ServletResponse res)
             throws ServletException,
                    java.io.IOException

I wanted to treat the http request/response process as a function, like so

// Client
trait Sender {
  def send(request: RequestValue): ResponseValue
}

// Server
trait Receiver {
  def receive(request: RequestValue): ResponseValue
}

This allows implementors to test pure functions rather than dealing with streams.

There is also a good bit of support for handling dispatch in a testable way. A server can compose a bunch of named receivers together, an be confident that any path collisions will fail immediately with a sensible error message, rather than having an arbitrary receiver pick up the request.

Limitations

  • The request and response values are reified immediately. This is usually not a problem unless your application typically ignores large portions of the request or response and thus could be optimized by waiting until they needed to be reified.
  • By design, this library does not handle streaming. If you need streaming this is the wrong tool for the job.

Версии библиотеки

Версия
1.0.1
1.0