mirror of
https://github.com/zigzap/zap.git
synced 2025-10-20 23:24:09 +00:00
update basic app example with stop endpoint
This commit is contained in:
parent
a01c6146ec
commit
337276fa52
2 changed files with 36 additions and 5 deletions
|
@ -215,7 +215,7 @@ really promising.
|
||||||
|
|
||||||
### 📣 Shout-Outs
|
### 📣 Shout-Outs
|
||||||
|
|
||||||
- [httpz](https://github.com/karlseguin/http.zig) : Pure Zig! Closer to Zap's
|
- [httpz](https://github.com/karlseguin/http.zig) : Pure Zig! Close to Zap's
|
||||||
model. Performance = good!
|
model. Performance = good!
|
||||||
- [jetzig](https://github.com/jetzig-framework/jetzig) : Comfortably develop
|
- [jetzig](https://github.com/jetzig-framework/jetzig) : Comfortably develop
|
||||||
modern web applications quickly, using http.zig under the hood
|
modern web applications quickly, using http.zig under the hood
|
||||||
|
|
|
@ -68,6 +68,27 @@ const SimpleEndpoint = struct {
|
||||||
pub fn options(_: *SimpleEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
pub fn options(_: *SimpleEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const StopEndpoint = struct {
|
||||||
|
path: []const u8,
|
||||||
|
error_strategy: zap.Endpoint.ErrorStrategy = .log_to_response,
|
||||||
|
|
||||||
|
pub fn get(_: *StopEndpoint, _: Allocator, context: *MyContext, _: zap.Request) !void {
|
||||||
|
std.debug.print(
|
||||||
|
\\Before I stop, let me dump the app context:
|
||||||
|
\\db_connection='{s}'
|
||||||
|
\\
|
||||||
|
\\
|
||||||
|
, .{context.*.db_connection});
|
||||||
|
zap.stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn post(_: *StopEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
||||||
|
pub fn put(_: *StopEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
||||||
|
pub fn delete(_: *StopEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
||||||
|
pub fn patch(_: *StopEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
||||||
|
pub fn options(_: *StopEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
||||||
|
};
|
||||||
|
|
||||||
pub fn main() !void {
|
pub fn main() !void {
|
||||||
// setup allocations
|
// setup allocations
|
||||||
var gpa: std.heap.GeneralPurposeAllocator(.{
|
var gpa: std.heap.GeneralPurposeAllocator(.{
|
||||||
|
@ -85,11 +106,13 @@ pub fn main() !void {
|
||||||
var app = try App.init(allocator, &my_context, .{});
|
var app = try App.init(allocator, &my_context, .{});
|
||||||
defer app.deinit();
|
defer app.deinit();
|
||||||
|
|
||||||
// create the endpoint
|
// create the endpoints
|
||||||
var my_endpoint = SimpleEndpoint.init("/", "some endpoint specific data");
|
var my_endpoint = SimpleEndpoint.init("/test", "some endpoint specific data");
|
||||||
|
var stop_endpoint: StopEndpoint = .{ .path = "/stop" };
|
||||||
// register the endpoint with the app
|
//
|
||||||
|
// register the endpoints with the app
|
||||||
try app.register(&my_endpoint);
|
try app.register(&my_endpoint);
|
||||||
|
try app.register(&stop_endpoint);
|
||||||
|
|
||||||
// listen on the network
|
// listen on the network
|
||||||
try app.listen(.{
|
try app.listen(.{
|
||||||
|
@ -98,6 +121,14 @@ pub fn main() !void {
|
||||||
});
|
});
|
||||||
std.debug.print("Listening on 0.0.0.0:3000\n", .{});
|
std.debug.print("Listening on 0.0.0.0:3000\n", .{});
|
||||||
|
|
||||||
|
std.debug.print(
|
||||||
|
\\ Try me via:
|
||||||
|
\\ curl http://localhost:3000/test
|
||||||
|
\\ Stop me via:
|
||||||
|
\\ curl http://localhost:3000/stop
|
||||||
|
\\
|
||||||
|
, .{});
|
||||||
|
|
||||||
// start worker threads -- only 1 process!!!
|
// start worker threads -- only 1 process!!!
|
||||||
zap.start(.{
|
zap.start(.{
|
||||||
.threads = 2,
|
.threads = 2,
|
||||||
|
|
Loading…
Add table
Reference in a new issue