Dart - api.route.post()
Register a handler for HTTP POST requests to the route.
import 'package:nitric_sdk/nitric.dart';final customersRoute = Nitric.api("public").route("/customers");customersRoute.post((ctx) async {// construct response for the POST: /customers request...final responseBody = {};ctx.res.json(responseBody);return ctx;});
Parameters
- Name
handler
- Required
- Required
- Type
- HttpHandler
- Description
The middleware service to use as the handler for HTTP requests.
Examples
Register a handler for POST requests
import 'package:nitric_sdk/nitric.dart';final customersRoute = Nitric.api("public").route("/customers");customersRoute.post((ctx) async {// construct response for the POST: /customers request...final responseBody = {};ctx.res.json(responseBody);return ctx;});
Chain services as a single method handler
When multiple services are provided they will be called as a chain. If one succeeds, it will move on to the next. This allows middleware to be composed into more complex handlers. You can call the next middleware in the chain using ctx.next()
. If a middleware in the chain does not call .next
and instead returns the base context, the call chain will end.
import 'package:nitric_sdk/nitric.dart';Future<HttpContext> validate(HttpContext ctx) async {if (!ctx.req.headers.containsKey("Content-Type")) {ctx.res.status = 400;ctx.res.body = "header Content-Type is required";// End the middleware chain by not calling `ctx.next()`.return ctx;}return ctx.next();}Future<HttpContext> createCustomer(HttpContext ctx) async {// handle the POST request...return ctx.next();}// The validate middleware will run before all handlers that are created using this routefinal customersRoute = Nitric.api("public").route("/customers", middlewares: [validate]);// The validate middleware will run before the createCustomer handlercustomersRoute.post(createCustomer);
Access the request body
The POST request body is accessible from the ctx.req
object.
import 'package:nitric_sdk/nitric.dart';final customersRoute = Nitric.api("public").route("/customers");customersRoute.post((ctx) async {final customerData = ctx.req.json();// parase, validate and store the request payload if it's availablereturn ctx;});
Last updated on Nov 4, 2024