JavaSparkServer中文混合笔记

网站:http://sparkjava.com/documentation#getting-started
有些东西不知道怎么翻译,所以可能有用词不准确的地方。英语好的可以直接去官网看,我这说是个笔记,其实很多地方就是个摘抄。看中文查询比较快速,这篇文章主要给自己查询用。

做server需要学习网络这是一定的,接触新技术可能也会有更多不知道的东西。沿袭李笑来的规劝,学习不用太完美主义,有些概念不了解,只要没到非用不可的程度,就不要节外生枝,先放一放。学大体的内容。毕竟你爱看电视,但是也不一定知道怎么做一个电视。

||目录||
启动server
Route
Halting 停止访问
Filters 设置验证 过滤器

(持续更新。。)

启动server

如何开启server?

发送request之后,自动开启

你可以设置如果初始化失败的信息

initExceptionHandler((e) -> System.out.println("Uh-oh"));

default:
private Consumer initExceptionHandler = (e) -> {
    LOG.error("ignite failed", e);
    System.exit(100);
};

如何关闭server?

stop();

Route

route是spark 里最重要的一部分,因为整个的请求就是一个route的集合。

route一般由三个部分组成:

  • 动词: verb (get, post, put, delete, head, trace, connect, options)
  • 路径: path (/hello, /users/:name)
  • 返回: callback (request, response) -> { }

如果想要调用相关的request必须与route相匹配。

get("/", (request, response) -> {
    // Show something
});

post("/", (request, response) -> {
    // Create something
});

put("/", (request, response) -> {
    // Update something
});

delete("/", (request, response) -> {
    // Annihilate something
});

options("/", (request, response) -> {
    // Appease something
});

Route的路径中(path)可以有通过params()和splat()调用的参数。

// matches "GET /hello/foo" and "GET /hello/bar"
// request.params(":name") is 'foo' or 'bar'
get("/hello/:name", (request, response) -> {
    return "Hello: " + request.params(":name");
});

// matches "GET /say/hello/to/world"
// request.splat()[0] is 'hello' and request.splat()[1] 'world'
get("/say/*/to/*", (request, response) -> {
    return "Number of splat parameters: " + request.splat().length;
});

路径组(Path groups)=> path()
适合不同类class的request

path("/api", () -> {
    before("/*", (q, a) -> log.info("Received api call"));
    path("/email", () -> {
        post("/add",       EmailApi.addEmail);
        put("/change",     EmailApi.changeEmail);
        delete("/remove",  EmailApi.deleteEmail);
    });
    path("/username", () -> {
        post("/add",       UserApi.addUsername);
        put("/change",     UserApi.changeUsername);
        delete("/remove",  UserApi.deleteUsername);
    });
});

Halting 停止访问

在route 和 filter(之后会介绍) 里用于立即关闭requst

halt();                // 停止
halt(401);             // 返回状态status并停止
halt("Body Message");  // 返回信息并停止
halt(401, "Go away!"); // 返回状态status,信息并停止

Filters 设置验证 过滤器

这里有三种filter

  • before each request
  • after each request
  • after after-filters.

前者是在任何request之前要先进行验证,后者是在request之后进行验证。至于为啥要after我也不知道,如果有同学知道欢迎帮着科普一下。第三种是在第二种之后。

filter不是一定要有path的。

before((request, response) -> { 
boolean authenticated; 
// ... check if authenticated if (!authenticated) 
{ 
halt(401, "You are not welcome here"); 
}
});


after((request, response) -> {
 response.header("foo", "set by after filter");
});


afterAfter((request, response) -> { 
response.header("foo", "set by afterAfter filter");
});

//有path的
before("/protected/*", (request, response) -> { 
// ... check if authenticated halt(401, "Go Away!");
});

你可能感兴趣的:(JavaSparkServer中文混合笔记)