restful_api.c
Go to the documentation of this file.
1 #include <stdio.h>
2 #include <string.h>
3 #include <stdlib.h>
4 #include "mongoose.h"
5 
6 static const char *s_no_cache_header =
7  "Cache-Control: max-age=0, post-check=0, "
8  "pre-check=0, no-store, no-cache, must-revalidate\r\n";
9 
10 static void handle_restful_call(struct mg_connection *conn) {
11  char n1[100], n2[100];
12 
13  // Get form variables
14  mg_get_var(conn, "n1", n1, sizeof(n1));
15  mg_get_var(conn, "n2", n2, sizeof(n2));
16 
17  mg_printf_data(conn, "{ \"result\": %lf }", strtod(n1, NULL) + strtod(n2, NULL));
18 }
19 
20 static int ev_handler(struct mg_connection *conn, enum mg_event ev) {
21  switch (ev) {
22  case MG_AUTH: return MG_TRUE;
23  case MG_REQUEST:
24  if (!strcmp(conn->uri, "/api/sum")) {
25  handle_restful_call(conn);
26  return MG_TRUE;
27  }
28  mg_send_file(conn, "index.html", s_no_cache_header);
29  return MG_MORE;
30  default: return MG_FALSE;
31  }
32 }
33 
34 int main(void) {
35  struct mg_server *server;
36 
37  // Create and configure the server
38  server = mg_create_server(NULL, ev_handler);
39  mg_set_option(server, "listening_port", "8000");
40 
41  // Serve request. Hit Ctrl-C to terminate the program
42  printf("Starting on port %s\n", mg_get_option(server, "listening_port"));
43  for (;;) {
44  mg_poll_server(server, 1000);
45  }
46 
47  // Cleanup, and free server instance
48  mg_destroy_server(&server);
49 
50  return 0;
51 }
int mg_get_var(const struct mg_connection *conn, const char *name, char *dst, size_t dst_len)
Definition: mongoose.c:5040
int main(void)
Definition: restful_api.c:34
const char * uri
Definition: mongoose.h:34
struct mg_server * mg_create_server(void *server_data, mg_handler_t handler)
Definition: mongoose.c:5431
const char * mg_get_option(const struct mg_server *server, const char *name)
Definition: mongoose.c:5425
static void handle_restful_call(struct mg_connection *conn)
Definition: restful_api.c:10
time_t mg_poll_server(struct mg_server *server, int milliseconds)
Definition: mongoose.c:4965
static const char * s_no_cache_header
Definition: restful_api.c:6
size_t mg_printf_data(struct mg_connection *c, const char *fmt,...)
Definition: mongoose.c:2785
#define printf
Definition: curl_printf.h:40
static int ev_handler(struct mg_connection *conn, enum mg_event ev)
Definition: restful_api.c:20
mg_event
Definition: mongoose.h:62
static struct mg_server * server
Definition: web_server.c:72
const char * mg_set_option(struct mg_server *server, const char *name, const char *value)
Definition: mongoose.c:5143
void mg_send_file(struct mg_connection *c, const char *file_name, const char *extra_headers)
Definition: mongoose.c:4585
void mg_destroy_server(struct mg_server **server)
Definition: mongoose.c:4969


rc_tagdetect_client
Author(s): Monika Florek-Jasinska , Raphael Schaller
autogenerated on Sat Feb 13 2021 03:42:16